目录
Linux系统
1. 安装软件
(1)centor-os
# 使用 yum 查找软件包
yum search
# 列出所有可安装的软件包
yum list
# 列出所有可更新的软件包
yum list updates
# 列出所有已安装的软件包,可加 “ |grep 要搜索关键字 ” 来查询你想查询的软件
yum list installed
# 安装软件
yum install 软件名 # 如:yum install net-tools
(2)ubantu
apt-get install net-tools
apt-get install -y nano
(3)查看某端口的使用情况:
netstat -anp |grep 端口号
(4)常用命令
cd 路径 # 切换路径
pwd # 查看当前所在路径
ls 目录 # 列出指定目录下的所有内容,ls后面没有加目录,则列出当前目录下的所有内容
ls -l | grep "^-" | wc -l # 统计当前目录下文件的个数(不包括目录)
ls -lR| grep "^-" | wc -l # 统计当前目录下文件的个数(包括子目录)
ls -lR | grep "^d" | wc -l # 查看某目录下文件夹(目录)的个数(包括子目录)
find . -name filename | wc -l # 统计当前文件夹下叫某某的文件的数量
find -name "*.js" | wc -l # 统计当前文件夹下指定类型的文件的数量,例如这里需要找 js 文件的数量
ls -l # 长列表输出该目录下文件信息(注意这里的文件是指目录、链接、设备文件等),每一行对应一个文件或目录,ls -lR 是列出所有文件,包括子目录
ll 内容名 # 不加内容名:列出当前目录下的所有详细信息(包含权限信息、日期信息等),加内容名:列出当前目录下的某个内容的详细信息(包含权限信息、日期信息等)
2. Linux启动和关闭
- linux中常用的关机/重启命令有shutdown、reboot、init、halt和poweroff。它们都可以达到重启系统的目的,但每个命令的内部工作过程是不同的
- 常用
reboot 立即重启
,shutdown -r now 立即重启
(1)shutdown 命令
- -h:停止系统服务并关机
- -r: 停止系统服务后重启
shutdown -h now --立即关机
shutdown -h 10:53 --到10:53关机,如果该时间小于当前时间,则到隔天
shutdown -h +10 --10分钟后自动关机
shutdown -r now --立即重启
shutdown -r +30 'The System Will Reboot in 30 Mins' --30分钟后重启并并发送通知给其它在线用户
(2)reboot 命令
- reboot表示立即重启,效果等同于
shutdown -r now
(3)init 命令
- init是所有进程的祖先,它的进程号始终为1,所以发送TERM信号给init会终止所有的 用户进程﹑守护进程等。shutdown 就是使用这种机制
- init定义了7个运行级别(runlevel):
init 0为停机或者关机(千万不能将initdefault设置为0)﹐
init 1为单用户模式,只root用户进行维护。
init 2 - 多用户,没有 NFS 不联网
init 3 - 完全多用户模式(标准的运行级)
init 4 - 没有用到
init 5 - X11 (xwindow) 图形化界面模式
init 6 - 重新启动 (千万不要把initdefault 设置为6 )
(4)halt 命令
- halt命令是最简单的关机命令,其实就是调用
shutdown -h
。halt执行时﹐不理会目前系统状况下,进行硬件关机;杀死应用进程﹐执行sync系统调用﹐文件系统写操作完成后就会停止内核
(5)poweroff 命令
- poweroff表示立即关机,效果等同于
shutdown -h now
,在多用户模式下(Run Level 3)不建议使用
3. Linux和本地windows之间的上传下载文件
-
通过在Linux上下载相关的软件工具,如
lrzsz、zip、unzip、tar 等
来实现 -
这里只介绍两种方法(其实两种就已经很够用了)
(1)上传rz
下载sz
-
若linux上无法使用,则安装一下即可
-
centor-os:
yum install lrzsz
-
这两个命令只能上传和下载文件,注意:不能之间上传、下载文件夹,
# 上传文件夹到Linux 可以在本地用 WinRAR 或其他软件将文件夹压缩成 zip 格式,再通过 "rz"命令上传到linux上用 "unzip 压缩文件"名解压即可 1. WinRAR压缩文件成zip格式 2. 命令: rz 3. 选择刚才压缩的文件 4. 命令: unzip 压缩文件名 # 下载文件夹到本地 方法类似:将Linux上的文件夹打包成压缩文件,再通过sz下载到本地 1. 用 zip 命令 或者 tar 命令打包文件夹 # 如将当前目录下的cas文件夹打包成cas.zip 。命令:zip -q -r cas.zip cas/ # 将dir1下的内容打包成 my.tar 。命令:tar -czvf my.tar dir1 2. 命令: sz 压缩文件名
(2)通过xshell和xftp工具上传下载文件
- 本地安装好xshell和xftp软件之后,用xshell连接到服务器,然后通过xshell窗口上的 新建文件传输 图标实现文件和文件夹的传输
4. 删除文件
rm 命令
完整命令:rm [options] name
参数:
1. -i 删除前逐一询问确认
2. -f 无需确认,直接删除,即使文件属性是 '唯读'
3. -r 将目录及以下的内容全部删除
删除当前目录下的所有内容
命令: rm -r *
5. cp 命令
复制文件
-
不管是
cp
还是scp
、rsync
的上传或下载命令,他们的命令书写都遵循一个规则,就是从哪传到哪,前面是(从哪)源文件,后面是(到哪)目标文件 -
复制源文件或目录到指定目录
-
语法:cp +参数+源文件或目录+目标目录(可以改名)
-r或-R:递归处理,将指定目录下的子文件和子目录一并处理(复制目录的时候使用)
-f:强行复制文件或目录,不论目标文件或目录是否已存在
-p:保留文件属性(所有者、所属组、文件权限、文件时间·····)
-a:相当于-prd
-i:覆盖既有文件时先询问用户。(默认-i)
-l:对源文件建立硬连接,非复制文件。
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀。
-b:覆盖已存在的文件目标前将目标文件备份。
-v:详细显示命令执行的操作。
-d:–no-dereference –preserv=links 复制符号连接加的选项
注意:当复制目录的时候一定要加上选项-r,不然不能复制
实例:
1. 复制并重命名
cp a.txt b.txt # 复制a.txt 到本目录下并命名为 b.txt
2. 复制目录的时候必须加 -r # 将test目录复制一份成 test2目录,注意:复制目录时,不能复制到他本身下
cp -r test/ test2
6. vim 命令
编辑文本文件
- 打开并编辑文本文件
- 共有三种模式:命令模式、输入模式、末行模式
1. 完整命令: "vim 文件路径"
2. 简单介绍
命令模式: 在文件中进行 查找、删除、复制、粘贴 操作
输入模式: 就是正常的编辑文件
末行模式: 对文件的操作进行 保存、退出vim等
3. 三种模式之间的切换
命令模式 --> 输入模式 # i、I、a、A、o、O、Insert 键
输入模式 --> 命令模式 # Esc 键
命令模式 --> 末行模式 # : 键
末行模式 --> 命令模式 # Esc 键
(1)命令模式
命令模式: # 实际上看不到输入的命令
默认处于命令模式,此模式下可以用方向键或者" h、j、k、l " 移动光标,还可以对文件进行复制、粘贴、替换、删除等操作
# 光标操作:
跳转到行首: Home 键、 "^"键、数字"0"
跳转到行尾: End 键、"$"键
跳转到文件的首行: "1G"、"gg"
跳转到文件的尾行: "G"
跳转到文件的第n行: "nG" # n为数字
行号显示/不显示: ":set nu" ":set nonu"
# 文件内容操作
删除:
删除光标处的单个字符: "x、X、Del"键
删除当前光标所在行: "dd"
删除从光标处开始的 n 行内容 "ndd" # n为数字
删除从行首到光标的所有内容 "d^"
删除从行尾到光标的所有内容 "d$"
复制:
复制光标所在行的整行 "yy"
复制从光标往上的 n 行内容 "nyy" # n为数字
粘贴:
粘贴到光标之后 "p" # 小写
粘贴到光标之前 "P" # 大写
查找: # 能看到命令
查找字符串 "/word" # 从上而下查找"word"字符串
查找字符串 "/word" # 从下而上查找"word"字符串
(2)末行模式
- 主要是用来对文件进行保存、退出vim编辑器 等操作
1. 保存文件
:w
:w 文件路径 # 另存为其他文件,如 :w /root/new_file/test.txt ,另存为/root/new_file目录下的test.txt
2. 退出vim
:q # 未修改任何内容的情况下,退出vim
:q! # 放弃修改,退出vim
3. 保存文件并退出vim
:wq
7. cat 命令
-
cat 命令
两种用法- 显示文件内容,打印到终端
- 也可以把几个文件内容附加到另一个文件中,即连接合并文件
-
基本使用:
1. 查看文件内容(会把内容全部打印到终端) cat [选项] 文件路径 # 不论文件内容有多少,都会一次性显示。如果文件非常大,那么文件开头的内容就看不到了不过 Linux 可以使用 PgUp+上箭头 组合键向上翻页,但是这种翻页是有极限的,如果文件足够长,那么还是无法看全文件的内容 参数说明: -A 相当于 -vET 选项的整合,用于列出所有隐藏符号; -E 列出每行结尾的回车符 $; -n 对输出的所有行进行编号; -b 同 -n 不同,此选项表示只对非空行进行编号。 -T 把 Tab 键 ^I 显示出来; -V 列出特殊字符; -s 当遇到有连续 2 行以上的空白行时,就替换为 1 行的空白行。 2. 查找文件中的内容 cat a.txt |grep ** # ** 即是要查找的内容 3. 利用cat 创建文件 若原来没有文件: cat > b.txt <<EOF >你要输入的内容... >EOF # 上面三行的意思是创建并打开一个 b.txt文件,并且以EOF为结束编辑并保存的结束语(也可以用自定义的结束语),中间输入自己要编辑的内容,最后输入EOF保存退出。 4. 利用cat清空文件内容(实际就是利用cat的编辑模式,进行覆盖写,和python中的 w 模式相同) cat >c.txt<<EOF >EOF 5. 像文件的尾部写入内容(追加写) 命令与上面的覆盖写类似,只是把 > 换成 >> 即可 cat >> b.txt <<EOF 6. cat 可以实现调用变量,对关键字$的转义 如 不转义$ cat >test.txt <<EOF >DATE=$(date + %Y%m%d) >mkdir /root/$DATE >EOF cat test.txt 结果为: DATE=20220620 mkdir /root/ 转义 $ cat >test.txt <<EOF >DATE=$(date + %Y%m%d) >mkdir /root/\$DATE >EOF cat test.txt 结果为: DATE=20220620 mkdir /root/$DATE 7. 合并文件的内容到一个新的文件中 [root@localhost base]# ls file1.txt file2.txt [root@localhost base]# cat file1.txt http://c.biancheng.net(file1.txt) [root@localhost base]# cat file2.txt is great(file2.txt) [root@localhost base]# cat file1.txt file2.txt > file3.txt [root@localhost base]# more file3.txt # more 命令也可查看文件中的内容 http://c.biancheng.net(file1.txt) is great(file2.txt) [root@localhost base]# ls file1.txt file2.txt file3.txt
7. 后台执行程序
(1)后台执行
nohup 命令
- 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行
- 在默认情况下(非重定向时),会输出一个名叫
nohup.out
的文件到当前目录下,如果当前目录的nohup.out
文件不可写,输出重定向到$HOME/nohup.out
文件中
1. 完整命令:
" nohup Command [ Arg … ] [ & ] "
参数说明:
Command:要执行的命令。
Arg:一些参数,可以指定输出文件。
&:让命令在后台执行,终端退出后命令仍旧执行。
2. 实例
nohup python /opt/project/test.py & # 以下命令在后台执行 /opt/project 目录下的 test.py 脚本,在终端如果看到以下输出说明运行成功 appending output to nohup.out
nohup /root/runoob.sh > runoob.log 2>&1 &
2>&1 解释:
# 将标准错误 2 重定向到标准输出 &1 ,标准输出 &1 再被重定向输入到 runoob.log 文件中
0 – stdin (standard input,标准输入)
1 – stdout (standard output,标准输出)
2 – stderr (standard error,标准错误输出)
3. 结束后台运行的程序
- 可以用杀死进程的方法实现
- 可以查看当前终端后台执行的任务,然后用 kill jobnum 命令来删除任务(这种不太推荐,终端断开或关闭之后,就差看不到之前的任务了)
ps -aux | grep "test.py"
ps -aux | grep "runoob.sh"
参数说明:
a : 显示所有程序
u : 以用户为主的格式来显示
x : 显示所有程序,不区分终端机
找到进程号PID之后,可以用 kill PID 命令来删除
kill -9 进程号PID
(2)前、后台任务切换
-
将后台执行的程序调到前台继续执行
命令: fg 将后台中的命令调至前台继续运行 如果后台中有多个命令,可以先用jobs查看jobnun,然后用 fg jobnum 将选中的命令调出 命令: Ctrl + z 将一个正在前台执行的命令放到后台,并且处于暂停状态 命令: bg 将一个在后台暂停的命令,变成在后台继续执行 如果后台中有多个命令,可以先用jobs查看jobnum,然后用 bg jobnum 将选中的命令调出继续执行
(3)nohup.out
维护
-
nohup.out
会一直增加内容,因此就有了不停止服务直接,清空nohup.out
文件的方法。
两个可以不用停止WEB服务就可以清空nohup.out
的命令第一种: cp /dev/null nohup.out 第二种: cat /dev/null > nohup.out
8. 进程相关
(1)显示进程
-
显示进程常用命令
ps -ef # 显示所有进程信息 ps -ef|grep *** # 查找特定进程, *** 代表进程信息中包含的关键字,如 是什么程序python、java等,运行脚本的文件名等
(2)杀死进程
-
杀进程常用命令
kill PID # 杀死某进程 kill -9 PID # 彻底杀死某进程 杀死指定用户的所有进程 kill -9 $(ps -ef | grep hnlinux) # 方法一 过滤出hnlinux用户进程 kill -u hnlinux # 方法二
9. 防火墙相关
CentOS7 端口的开放关闭查看都是用防火墙来控制的,具体命令如下:
一、打开/关闭某个端口
# 查看防火墙状态:(active (running) 即是开启状态)
systemctl status firewalld
# 查看已开放端口:(8080和3306 即是已开放端口)
firewall-cmd --list-all
# 防火墙开放端口:(以3306为例)
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 关闭8080端口
firewall-cmd --permanent --zone=public --remove-port=8080/tcp
# 重启防火墙:
systemctl restart firewalld.service
# 更新防火墙规则:
firewall-cmd --reload
命令含义:
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
firewall-cmd --reload 并不中断用户连接,即不丢失状态信息
firewalld的基本使用
二、常用操作命令
# 启动:
systemctl start firewalld
# 关闭:
systemctl stop firewalld
# 查看状态:
systemctl status firewalld
# 开机禁用 :
systemctl disable firewalld
# 开机启用 :
systemctl enable firewalld
※systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。
# 启动一个服务:
systemctl start firewalld.service
# 关闭一个服务:
systemctl stop firewalld.service
# 重启一个服务:
systemctl restart firewalld.service
# 显示一个服务的状态:
systemctl status firewalld.service
# 在开机时启用一个服务:
systemctl enable firewalld.service
# 在开机时禁用一个服务:
systemctl disable firewalld.service
# 查看服务是否开机启动:
systemctl is-enabled firewalld.service
# 查看已启动的服务列表:
systemctl list-unit-files|grep enabled
# 查看启动失败的服务列表:
systemctl --failed
# 配置
firewalld-cmd
# 查看版本:
firewall-cmd --version
# 查看帮助:
firewall-cmd --help
# 显示状态:
firewall-cmd --state
# 查看所有打开的端口:
firewall-cmd --zone=public --list-ports
# 查看区域信息:
firewall-cmd --get-active-zones
# 查看指定接口所属区域:
firewall-cmd --get-zone-of-interface=eth0
# 拒绝所有包:
firewall-cmd --panic-on
# 取消拒绝状态:
firewall-cmd --panic-off
# 查看是否拒绝:
firewall-cmd --query-panic
systemctl start firewalld.service 启动防火墙
systemctl enable firewalld 自启动
firewalld-cmd 后面跟命令行
firewalld-cmd --help 查看一下有啥命令呗
firewall-config 图形化配置,偷懒大法
firewall-cmd --zone=block --add-source=192.168.100.0/24 添加一条规则,凡是来自192.168.100.0/24网段的信息就放到block中
firewall-cmd --zone=block --remove-source=192.168.100.0/24 remove删了这条规则
这个block 的zone 到这里的都给拒绝了,去别的机器ping就ping不通了
firewall-cmd --zone=drop --add-source=192.168.100.0/24 这个drop比block还厉害,直接把你包给扔了都不告诉你
一般用drop,别用block
systemctl restart firewalld.service 重启以后临时规则就没了,永久规则还有
firewall-cmd --permanent --zone=drop --add-source=192.168.100.0/24 使用--permanent永久规则,必须重启服务后生效
firewall-cmd --list-all 列出规则,默认public
10. su 和 sudo
(1)su
介绍
-
su
的全称是switch user,用来切换当前用户。su
的一般使用方法是su
或者su -
su是切换到root用户的命令,主要用法如下: su # 不带参数直接输入su将切换到root用户,需要输入root密码 su - # 等同于 su -l,切换到root用户并加载root的环境变量(等同于root身份登录),加入了 - 或 -l 参数表示同时切换到该用户的环境 su username # 切换到其他用户,需要输入该用户的密码 su -c ‘commond’ # 以root用户执行命令,类似于sudo,不同之处是需要输入root密码 su命令主要是用来切换root身份,前提是需要知道root密码
(2)sudo
介绍
- 全称为super user do,即以超级用户的方式执行命令,这里的超级用户指的就是root用户,我们在Linux中有时会遇到permission denied的情况,如以ubuntu用户的身份查看/etc/shadow的内容,因为它是只有root用户才能查看的,这个时候就可以使用
sudo
- 使用
sudo su -
,提供当前用户的密码,可以切换到root用户 - 完整命令
sudo '要执行的commond'
11. 权限相关
(1)关键字解释
通过ll查看详细信息时,例如:
-rwxrwxrwx. 1 root root 181 3月 15 15:34 test.txt
从左往右:(r 为 读,w 为 写,x 为 可执行)
- # 表示类型 -表示普通文件 d表示目录
rwx # 第一组rwx:当前用户权限,某个权限没有就显示 -
rwx # 第二组rwx:当前用户组权限,某个权限没有就显示 -
rwx # 第三组rwx:其他用户权限,某个权限没有就显示 -
(2)chmod 命令
修改权限
-
完整命令
chmod [options] mode 文件或目录名
-
修改文件权限,共两种命令方式
-
使用相加减表达权限,
-
使用数字表达权限
权限介绍:4=可读 2=可写 1=可执行 7 7 7 第一个7 是 文件所有者的权限 第二个7 是 文件所属组的权限 第三个7 是 其他用户的权限 7 = 4+2+1 表示有可读可写可执行 6 = 4+2 表示有可读可写权限 5 = 4+1 表示有可读可执行 [options]: -c # 若该文件权限确实已经更改,才显示其更改动作 -f # 若该文件权限无法被更改也不要显示错误讯息 -v # 显示权限变更的详细资料 -R # 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更) mode : u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。u用户 g组 o其它 a 所有用户(默认) + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。 r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行
-
(3)权限修改实例
i)更改目录所有者(非 chmod 命令
)
" chown -R 用户名称 目录名称 "
ii)更改目录权限
1. chmod u+x file # 给file的属主增加执行权限
2. chmod 751 file # 给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
3. chmod u=rwx,g=rx,o=x file # 同 2 效果一样
4. chmod =r file # 为所有用户分配读权限
5. chmod 444 file # 同 4 效果一样
6. chmod a-wx,a+r file # 同 4、5 效果一样
7. chmod -R u+r directory # 递归地给directory目录下所有文件和子目录的属主分配读的权限
8. chmod 4755 # 设置用ID,给属主分配读、写和执行权限,给组和其他用户分配读、执行的权限。
12. wget 命令
(1)wget
介绍
-
wget
命令是Linux系统用于从Web下载文件的命令行工具,支持 HTTP、HTTPS及FTP协议下载文件,而且wget
还提供了很多选项,例如下载多个文件、后台下载,使用代理等等 -
完整命令
wget [options] [url]
[options]: 常用参数,'注意大小写' -O # 以其他名称保存下载的文件 -P # 将文件下载到指定目录 -c # 断点续传 -nc # 不要重复下载已存在的文件 -b # 在后台下载 -i # 下载多个文件 -limit-rate # 限制下载速度 -U # 设定模拟下载 -t # 增加重试次数 实例: # 该命令会下载文件到当前工作目录中,在下载过程中,会显示进度条、文件大小、下载速度等 wget https://download.redis.io/releases/redis-6.0.8.tar.gz wget -O redis.tar.gz https://download.redis.io/releases/redis-6.0.8.tar.gz wget -P /usr/software https://download.redis.io/releases/redis-6.0.8.tar.gz wget -c https://download.redis.io/releases/redis-6.0.8.tar.gz # 如果先要一次下载多个文件,首先需要创建一个文本文件,并将所有的url添加到该文件中,每个url都必须是单独的一行 vim download_list.txt wget -i download_list.txt # 下载速度限制为1m/s wget --limit-rate=1m https://download.redis.io/releases/redis-6.0.8.tar.gz # 如果远程服务器阻止wget下载资源,我们可以通过-U选项模拟浏览器进行下载,例如下面模拟谷歌浏览器下载 wget -U 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.43 Safari/537.36' https://download.redis.io/releases/redis-6.0.8.tar.gz # 设置重试次数为40次 wget --t=40 https://download.redis.io/releases/redis-6.0.8.tar.gz # 通过FTP下载如果要从受密码保护的FTP服务器下载文件,需要指定用户名和密码,格式如下 wget --ftp-user=<username> --ftp-password=<password> url