一、前言

本文主要从以下几个方面介绍Linux命令:

  • Linux命令行格式
  • Linux命令格式
  • Linux基础命令

二、Linux命令行格式

Linux命令行格式可以分为四部分,具体如下:

[root@k8s-node02 ~]#

第一部分:当前用户,比如root

第二部分:连接符,比如@

第三部分:主机名,比如k8s-node02。如果不修改默认是localhost

第四部分:当前目录,比如~表示在家目录

第五部分:用户身份,#表示root用户 $表示普通用户

三、Linux命令格式

Linux命令格式基本如下:

命令 [命令选项] [参数]
命令格式说明 说明
命令 这是要执行的实际命令的名称。它可以是系统命令、自定义脚本或可执行文件的名称。
命令选项 这是命令的选项或标志,用于自定义命令的行为。选项通常以短横线(-)或双短横线(--)开头,后跟一个字母或单词。选项可以是可选的,通常用于启用或禁用特定功能。例如,-l--list
参数 这是命令的参数,用于提供操作的对象或数据。参数可以是文件名、目录、文本字符串等,具体取决于命令的功能。有些命令不需要参数,而有些命令需要一个或多个参数。

举个示例:

$ ls -l /var/www

四、Linux命令分类

在Linux中,命令可以分为两大类:内部命令(Built-in Commands)和外部命令(External Commands)。这些命令的主要区别在于它们是如何执行和处理的。

内部命令(Built-in Commands):

  • 内部命令是由shell本身实现和处理的,而不是通过外部可执行文件。
  • 它们通常涉及到shell的内部操作,如变量设置、环境控制、进程控制等。
  • 由于是shell内部的一部分,内部命令的执行速度通常较快。
  • 一些常见的内部命令包括cdechoexitaliashistory等。

外部命令(External Commands):

  • 外部命令是由独立的可执行文件或脚本来实现和处理的。
  • 它们通常是系统中的独立程序,可以在命令行中运行。
  • 由于是外部可执行文件,外部命令的执行速度可能会受到文件系统的I/O操作和可执行文件大小的影响。
  • 举例来说,lsgreptarcat等常见的命令都是外部命令。

要确定一个命令是内部命令还是外部命令,可以使用type命令或which命令。例如:

$ type cd

cd is a shell builtin

而对于外部命令:

$ type ls

ls is aliased to `ls --color=auto'

五、Linux命令分类

在介绍Linux基础命令之前先介绍一个在线查询Linux命令网站:Linux命令大全,非常Nice

5.1 Linux关机重启命令

Linux关机命令

关机命令 命令说明
shutdown 关机
shutdown -c 取消关机
shutdown -h shutdown -h now立刻关机 或shutdown -h 10 10分钟后关机
halt 关机,关闭系统,需要手动切断电源
poweroff 关机
init 0 关机

Linux重启命令

重启命令 命令说明
shutdown -r 重启,reboot, shutdown -r now(立即重启) 或shutdown -r 20(20分钟后开机)
reboot 重启
init 6 重启

5.2 Linux查询帮助命令

帮助命令 命令说明
man man 命令(查询帮助)
--help 命令 --help(查询简单帮助)
info帮助 详细帮助

5.3 Linux网络命令

网络命令 命令说明
ping ip或域名 检查网络连通性
telnet ip 端口 检查端口是否开启

5.4 Linux目录/文件命令

目录/文件相关命令 命令说明
cd 切换目录
pwd 以绝对路径显示当前所在位置
mkdir 创建目录
ls 查看目录内容
touch 创建文件
mv 移动或改名
cp 复制文件/目录
rm 移除,删除文件或目录
echo 输出信息到屏幕
cat 显示文件内容
du 查看目录大小
file 查看文件的详细类型
文本处理三剑客 命令说明
grep 在文件中或管道中进行查找,找出想要的内容
sed
awk
文件查找四剑客 命令说明
find 查找文件

5.4.1 cd

一、 cd命令常用用法

cd命令选项 命令说明
cd 回到家目录
cd - 返回上次所在目录
cd . 进入当前目录
cd .. 返回到上层目录

二、 cd命令示例

示例: 回到家目录

$ cd /etc/
$ cd

示例: 返回上次所在目录

$ cd /etc/
$ cd 
$ cd -

示例: 进入当前目录

$ cd /etc/
$ cd ./yum

示例: 返回到上层目录

$ cd /etc/
$ cd ..

5.4.2 pwd

示例: 以绝对路径显示当前所在位置

$ pwd

5.4.3 mkdir

一、 mkdir命令常用用法

mkdir相关命令 命令说明
mkdir -p xx/xx/xx 创建多层目录
mkdir -p 批量创建有规律的多层目录

二、 mkdir命令示例

示例: 创建多层目录

$ mkdir -p /a/b/c/

示例: 批量创建有规律的多层目录

$ mkdir -p {a..c}

5.4.4 ls

一、 ls命令常用用法

ls命令选项 命令说明
ls -l 以长格式显示,显示详细信息,缩写为ll
ls -t 按照修改时间排序
ls -r 逆序排序,一般和-t选项搭配使用
ls -h 以人类可读形式显示大小,比如K,M,G

二、 ls命令示例

示例: 查看 /etc目录下面的内容并且显示详细信息

$ ls -l /etc
$ ll /etc

示例: 查看/etc目录按照时间排序逆序排序

$ ls -lrt /etc/
$ ll -rt /etc/

示例: 以人类可读形式显示/etc目录大小

$ ls -lh /etc/
$ ll -h /etc/

5.4.5 touch

一、 touch命令常用用法

touch命令选项 命令说明
touch 批量创建有规律的文件

示例: 创建文件aaa

$ touch aaa

示例: 创建文件名为1-10的文件

$ touch {1..10}

5.4.6 mv

一、 mv命令常用用法

mv命令选项 命令说明
mv 文件/目录 目录 移动文件/目录到指定目录下
mv 旧文件 新文件 改名

二、 mv命令示例

示例: 移动aaa.txt 到/tmp下面

$ mv aaa.txt /tmp

示例: 将aaa.txt改名为bbb.txt

$ mv aaa.txt bbb.txt

5.4.7 cp

一、 cp命令常用用法

cp命令选项 命令说明
cp -a 源目录 目标目录 复制所有
cp -r 递归复制,复制目录及目录的内容
cp -p 复制的时候保持属性不变
cp -d 可以复制软连接
cp -t /目标目录 源文件1 源文件2 源文件3 复制单个或多个文件到同一目录

二、 cp命令示例

示例: 复制/etc/hostname到/tmp下面

$ cp /etc/hostname /tmp

示例: 复制/etc/目录到/tmp下面

$ cp -a /etc/ /tmp/

示例: 复制/etc/目录下以.conf结尾的文件到/tmp目录下面

$ cp -t /tmp/ /etc/*.conf

5.4.8 rm

一、 rm命令常用用法

rm命令选项 命令说明
rm -f 强制删除,不提示
rm -r 递归删除,删除目录及目录的内容

二、 rm命令示例

示例: 删除aaa.txt文件,一般都有提示语,按y即可

$ rm aaa.txt

示例: 强制删除aaa.txt文件

$ rm -f aaa.txt

示例: 强制删除aaa目录,默认不能直接删除目录

$ rm -rf aaa

5.4.9 echo

一、 echo命令常用用法

echo命令选项 命令说明
echo -n 不输出结尾的换行符
echo xxx > 文件 先清空文件内容,然后再写入xxx
echo xxx >> 文件 不清空文件内容,直接写入xxx到文件末尾
echo 输出有规律的内容

二、 echo命令示例

示例: 打印aaa

$ echo aaa

示例: 不输出结尾的换行符打印aaa

$ echo -n aaa

示例: 把xxx写入文件aaa中,其中文件可以清空

$ echo xxx > aaa

示例: 把xxx写入文件aaa中,其中文件不可以清空

$ echo xxx >> aaa

示例: 输出1-10连续数字

$ echo {0..10}

5.4.10 cat

一、 cat命令常用用法

cat命令选项 命令说明
cat -n 显示文件内容及行号

二、 cat命令示例

示例: 显示aaa文件中内容并显示行号

$ cat -n aaa

5.4.11 du

一、 du命令常用用法

du命令选项 命令说明
du -h 以人类可读的方式显示大小
du -s 不显示目录中所有的子目录,只显示查看目录的汇总信息

二、 du命令示例

示例: 查看/etc/目录大小

$ du -sh /etc

5.4.12 file

一、 file命令常用用法

file命令选项 命令说明
file 文件 查看文件的具体类型

二、 file命令示例

示例: 查看/etc/hostname文件具体类型

$ file /etc/hostname

5.4.13 文本处理三剑客(grep、sed、awk)

5.4.13.1 grep

一、 grep命令常用用法

grep命令选项 命令说明
grep -n 查看内容时显示行号
grep -v 排除,取反
grep -i 不区分大小写

二、 grep命令示例

示例: 在/etc/passwd中过滤出包含root的行

$ grep 'root' /etc/passwd

示例: 在/etc/passwd中过滤出包含root的行且显示行号

$ grep -n 'root' /etc/passwd

示例: 在/etc/passwd中过滤出包含network的行不区分大小写

$ grep -i 'network' /etc/passwd

示例: 在/etc/passwd中过滤出排除network的行

$ grep -v 'network' /etc/passwd

5.4.13.2 sed

一、 sed命令常用用法

sed命令选项 命令说明
sed -n 取消默认输出(默认输出会输出文件全部内容)
sed -v sed支持扩展正则
sed -i 修改文件内容(直接修改),这个选项放在最后
sed -i.bak 先进行备份,然后修改文件内容,这个选项放在最后
sed -a 在指定行后面追加内容
sed -i 在指定行上面插入一行
sed -c 替换指定行内容

二、 sed命令示例

查找

示例: 取出文件的第3行

$ sed  -n '3p' /etc/passwd

示例: 取出/etc/passwd的第2行到第5行

$ sed -n '2,5p' /etc/passwd

示例: 过滤出/etc/passwd中包含root的行

$ sed -n '/root/p' /etc/passwd

示例: 获取范围内(包含102所在行到包含105所在行)的日志(以行为单位)

$ sed -n '/102/ , /105/p' a.txt

示例: 只显示第3行和第5行

$ sed -n '1p;5p' /etc/passwd

示例: 打印序列中的奇数行

$ seq 10 |sed -n '1~2p' 

也可以打印序列中的偶数行

$ seq 10 |sed -n '2~2p' 

修改基础

示例: 把a.txt文件中I替换为i(不备份直接改)

[root@k8s-node01 ~]# cat a.txt
I
00001111
love
linux.
1231323242423231
[root@k8s-node01 ~]# sed -i s/I/i/g a.txt
[root@k8s-node01 ~]# cat a.txt
i
00001111
love
linux.
1231323242423231

示例: 把a.txt文件中I替换为i(先备份再改)

[root@k8s-node01 ~]# cat a.txt
I
00001111
love
linux.
1231323242423231
[root@k8s-node01 ~]# sed -i.bak s/I/i/g a.txt
[root@k8s-node01 ~]# cat a.txt
i
00001111
love
linux.
1231323242423231
[root@k8s-node01 ~]# ls *.bak
a.txt.bak

示例: 输出12345678,通过sed加工变成1<234567>8

[root@k8s-node01 ~]# echo 12345678 |sed -r 's#(1)(.*)(8)#\1<\2>\3#g'
1<234567>8

示例: 调换/etc/passwd第1列和最后一列内容

[root@k8s-node01 ~]# cp /etc/passwd .
[root@k8s-node01 ~]# sed -r 's#^(.*)(:x.*:)(.*$)#\3\2\1#g' passwd

示例: 取出网卡ip地址

# 方法一
[root@k8s-node01 ~]# ip a s ens33 | sed -n '3p' | sed -r 's#^.*et ([0-9.]+)/.*$#\1#g'
192.168.1.42

# 方法二
[root@k8s-node01 ~]# ip a s ens33 | sed -rn '3 s#^.*et ([0-9.]+)/.*$#\1#g p'
192.168.1.42

# 方法三
[root@k8s-node01 ~]# ip a s ens33 | sed -n '3p' | awk '{print $2}' | sed 's#/24##g'
192.168.1.42

# 方法四
[root@k8s-node01 ~]# ip a s ens33 | sed -n '3p' | awk -F "[ /]+"  '{print $3}'
192.168.1.42

# 方法五
[root@k8s-node01 ~]# ip a s ens33 | sed -n '3p' | awk -F "[ /]+" 'NR=3{print $3}'
192.168.1.42

# 方法六
[root@k8s-node01 ~]# hostname -I | awk {print$1}
192.168.1.42

示例: 取出stat /etc/hosts中的0644或644

[root@k8s-node01 ~]# stat /etc/hosts | sed -n '4p' | sed -r 's#^.*\(([0-9]+)/.*$#\1#g'
0644

删除

示例: 删除文件第三行

$ sed  '3d' sed.txt

示例: 删除文件中的空行和带注释的行

# 方法一
$ egrep  -v '^$|#' /etc/ssh/sshd_config
# 方法二
$ sed -r '/^$|#/d' /etc/ssh/sshd_config

示例: 排除文件中的空行和带注释的行

# 方法一
$ awk  '! /^$|#/' /etc/ssh/sshd_config

# 方法二
$ sed -nr '/^$|#/!p' /etc/ssh/sshd_config

增加

示例: 在文件a.txt的第三行后面添加123456(不会实际修改,只是预览)

[root@k8s-node01 ~]# sed '3a 123456' a.txt
i
00001111
love
123456
linux.
1231323242423231

示例: 在文件a.txt的第三行上面插入一行123456(不会实际修改,只是预览)

[root@k8s-node01 ~]# sed '3i 123456' a.txt
i
00001111
123456
love
linux.
1231323242423231

示例: 替换文件a.txt的第三行内容为123456

[root@k8s-node01 ~]# sed '3c 123456' a.txt
i
00001111
123456
linux.
1231323242423231

5.4.13.3 awk

一、 awk命令常用用法

awk命令选项 命令说明
awk -F 设置输入时的字段分隔符

二、 awk常用运算符

awk常用运算符 说明
== 等于
!= 不等于
> 大于
>= 大于等于
< 小于
<= 小于等于
&& 并且
|| 或者

三、 awk命令示例

取行操作

示例: 取出/etc/passwd的第 1行

[root@k8s-node01 ~]# awk  'NR==1{print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@k8s-node01 ~]# awk  'NR==1' /etc/passwd
root:x:0:0:root:/root:/bin/bash

示例: 取出第2行到第5行的内容

[root@k8s-node01 ~]# awk 'NR>=2 && NR <=5' /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

示例: 过滤出/etc/passwd文件 中包含root或nobody的行

[root@k8s-node01 ~]# awk '/root|nobody/' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin

示例: 从包含root的行到包含nobody的行

[root@k8s-node01 ~]# awk '/root/,/nobody/' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin

取列操作

示例: 使用awk取出ls -lh的 大小列和最后一列

# 方法一
[root@k8s-node01 ~]# ls -lh /etc/hosts | awk '{print $5,$9}'
208 /etc/hosts
# 方法二
[root@k8s-node01 ~]# ls -lh /etc/hosts | awk '{print $5,$NF}'
208 /etc/hosts

如果想awk输出对齐,可以采用column命令或者\t命令

# 方法一
[root@k8s-node01 ~]# ls -lh /etc/hosts | awk '{print $5,$NF}' | column -t
208  /etc/hosts
# 方法二
[root@k8s-node01 ~]# ls -lh /etc/hosts | awk '{print $5"\t"$NF}'
208     /etc/hosts

示例: 取出/etc/passwd中的第 1列,第3列和最后一列

[root@k8s-node01 ~]# awk -F ':' '{print $1,$3,$NF}' /etc/passwd|column -t
root             0     /bin/bash
bin              1     /sbin/nologin
daemon           2     /sbin/nologin
adm              3     /sbin/nologin
lp               4     /sbin/nologin
sync             5     /bin/sync
shutdown         6     /sbin/shutdown
halt             7     /sbin/halt
mail             8     /sbin/nologin
operator         11    /sbin/nologin
games            12    /sbin/nologin
ftp              14    /sbin/nologin
nobody           99    /sbin/nologin
systemd-network  192   /sbin/nologin
dbus             81    /sbin/nologin
polkitd          999   /sbin/nologin
tss              59    /sbin/nologin
abrt             173   /sbin/nologin
sshd             74    /sbin/nologin
postfix          89    /sbin/nologin
zq               1000  /bin/bash
mysql            1001  /bin/bash

示例: 指定复杂分隔符取出ip

# 方法一
[root@k8s-node01 ~]# ip a s ens33 |awk 'NR==3' | awk '{print $2}' | awk -F '/' '{print $1}'
192.168.1.42

# 方法二
[root@k8s-node01 ~]# ip a s ens33 |awk 'NR==3' | awk -F 'inet |/24' '{print $2}'
192.168.1.42

取行与取列操作

示例: 取ip地址(取行+取列)

[root@k8s-node01 ~]# ip a s ens33 |awk -F '[ /]+' 'NR==3{print $3}'
192.168.1.42

示例: 取出权限部分 stat /etc/hosts的0644部分

# 方法一
[root@k8s-node01 ~]# stat /etc/hosts | awk -F '[^0-9]+' 'NR==4{print $2}'
0644

# 方法二
[root@k8s-node01 ~]# stat /etc/hosts | awk -F '[/(]' 'NR==4{print $2}'
0644

示例: 取出/etc/passwd文件中 第3列大于等于100的行,取出这行的第1列,第3列和最后 一列

[root@k8s-node01 ~]# awk -F':'  '$3>=100{print $1,$3,$NF}' /etc/passwd | column -t
systemd-network  192   /sbin/nologin
polkitd          999   /sbin/nologin
abrt             173   /sbin/nologin
zq               1000  /bin/bash
mysql            1001  /bin/bash

示例: 如果系统swap使用超过0则输出"异常 系统开始占用swap"

# 方法一
[root@k8s-node01 ~]# free | awk '/Swap/ && $3 >0 {print "异常系统开始占用swap"}'

# 方法二
[root@k8s-node01 ~]# free | awk 'NR==3 && $3 >0 {print "异常系统开始占用swap"}'

示例: 过滤出/etc/passwd第4 列的数字是以0或1开头的行,输出第1列,第3列,第4列

[root@k8s-node01 ~]# awk -F ':' '$4 ~ /^[01]/ {print $1,$3,$4}' /etc/passwd | column -t
root             0     0
bin              1     1
sync             5     0
shutdown         6     0
halt             7     0
mail             8     12
operator         11    0
games            12    100
systemd-network  192   192
abrt             173   173
zq               1000  1000
mysql            1001  1001

统计与计算操作

示例: 统计/etc/passwd文件行数

[root@k8s-node01 ~]# awk  '{i++} END{print i}' /etc/passwd
22

示例: 计算总和

[root@k8s-node01 ~]# seq 10 > num.txt
[root@k8s-node01 ~]# awk '{i=i+$1}END{print i}' num.txt
55

5.4.14 文件查找四剑客(find、、、)

5.4.14.1 find

一、 find命令常用用法

find命令选项 命令说明
find -type 什么类型的文件 f表示文件 d表示目录
find -name 文件名
find -size 根据大小查找文件 +表示大于 -表示小于,比如+10k(小写K) +10M(大写)
find -mtime 根据修改时间查找文件

二、 find命令示例

示例: 在/etc/目录中找出文件名叫hostname文件

$ find /etc/   -type f  -name 'hostname'

示例: 找出/etc/下面以.conf结尾的文件

$ find /etc/ -type f -name '*.conf'

示例: 在/etc/目录下面找出大于10kb的文件

$ find /etc/ -type f -size +10k

示例: 找出/etc/目录下以.conf结尾的,7天之前的文件

$ find /etc/ -type f -name "*.conf" -mtime +7

示例: 找出/etc/目录下以.conf结尾的,最近7天的文件

$ find /etc/ -type f -name "*.conf" -mtime -7

示例: 找出/etc/中以.conf结尾大于10kb修改时间是7天之前的文件

$ find /etc/ -type f -name "*.conf" -size +10k -mtime +7

示例: 找出/中以.conf结尾的文件,指定最多找2层目录,默认是所有层

$ find / -maxdepth 2  -type f -name "*.conf"

示例: 找出/etc/下面以.conf结尾的文件,不区分大小

$ find /etc -type f -iname "*.conf"

示例: 找出/etc/下面以.conf结尾的文件后显示详细信息

# 方法一:``
$ ls -lh `find /etc -type f -name '*.conf'`

# 方法二:xargs
$ find /etc -type f -name '*.conf' | xargs ls -lh

# 方法三:-exec
$ find /etc -type f -name '*.conf' - exec ls -lh {} \;

参数说明:

  • -exec:find选项,表示find找出文件后要执行的命令
  • {}:表示前面find命令找出的文件
  • \;表示命令结束,固定格式

示例: 找出/etc/下面以.conf结尾的文件打包压缩成find.tar.gz

# 方法一:``
$ tar zcf find.tar.gz `find /etc -type f -name '*.conf'`

# 方法二:xargs
$ find /etc -type f -name '*.conf' | xargs tar zcf find.tar.gz

# 方法三:-exec
$ find /etc -type f -name '*.conf' - exec tar zcf find.tar.gz {} +

注意:这里方法三中-exec \;执行方式 1个文件1个文件的压缩,所以需要替换成+

示例: 找出/etc/下面以.conf结尾的文件复制到/tmp下面

# 方法一:``
$ cp `find /etc -type f -name '*.conf'` /tmp/

# 方法二:xargs
$ find /etc -type f -name '*.conf' | xargs cp -t /tmp/

# 方法三:-exec
$ find /etc -type f -name '*.conf' - exec cp {} /tmp/ \;

注意:这里方法二中xargs会将查到的文件放到/tmp/目录后面,而正常来说cp 文件 /tmp/。所以需要使用-t参数修改格式,变成cp -t /tmp/ 源文件

5.4.14.2 2

5.4.14.3 3

5.4.14.4 4

5.5 Linux日志查询命令(日志四剑客)

日志查询命令 命令说明
head 显示文件的头几行,默认是头10行
tail 显示文件的后几行,默认是后10行
less 按页显示文件内容
more 按页显示文件内容,到达最后一行就退出

注意:查看日志不要使用,cat或vim,vi命令。如果使用vi/vim查看,从磁盘中加载到内存,占用系统内存,很容易导致系统内存不足。推荐使用不会占用系统太多资源的命令,查看日志:head/tail , less/more。

5.5.1 head

一、 head命令常用用法

head命令选项 命令说明
head -n num 显示头num行,默认显示头10行

二、 haed命令示例

示例: 显示/etc/passwd的前5行

$ head -n5 /etc/passwd
$ head -5 /etc/passwd

5.5.2 tail

一、 tail命令常用用法

tail命令选项 命令说明
tail -n num 显示最后num行,默认显示最后10行
tail -f 日志文件
tailf 日志文件
实时查看日志文件

二、 tail命令示例

示例: 显示/etc/passwd的前5行

$ tail -n5 /etc/passwd
$ tail -5 /etc/passwd

示例: 实时查看/var/log/secure末尾的更新

$ tail -f /var/log/secure

5.5.3 less

一、 less快捷方式

less快捷方式 说明
q 退出
空格或f 下一页
b 上一页
G 最后1行
g 第1行
99g 到第99行
/想要查询的内容 搜索,按n继续向下搜索,N继续向上搜索

二、 less命令用法

less选项 命令说明
less -N 显示行号

5.5.4 more

一、 more快捷方式

less快捷方式 说明
q 退出
空格或f 下一页
b 上一页
G 最后1行
g 第1行
99g 到第99行
/想要查询的内容 搜索,按n继续向下搜索,N继续向上搜索

5.6 Linux统计命令

统计命令 命令说明
wc 一般用来统计文件中搜索结果的个数
sort 排序
uniq 去重(去掉重复的留下唯一的)

5.6.1 wc

一、 wc命令常用用法

wc命令选项 命令说明
wc -l 统计行数

二、 wc命令示例

示例: 统计/etc/passwd文件有多少行

$ wc -l  /etc/passwd

5.6.2 sort

一、 sort命令常用用法

sort命令选项 命令说明
sort -n 把要排序的内容当做是数字,按照数字大小进行排 序,默认是升序排序(从小到大)
sort -k 指定某一列,根据某一列进行排序
sort -r 逆序排序
sort -t 指定分割符,只能指定1个字符,默认是空格

二、 sort命令示例

示例: 对文件中的数字进行排序

$ cat a.txt

11
23
3
433

$ sort -n a.txt

3
11
23
433

示例: 对文件中第三列进行排序

$ cat a.txt

192.168.1.1
192.168.1.22
192.168.1.3
192.168.3.1
192.168.3.22
192.168.3.3
192.168.2.1
192.168.2.22
192.168.2.3
192.168.5.1
192.168.5.22
192.168.5.3

$ sort -t '.' -n -k3 a.txt

192.168.1.1
192.168.1.22
192.168.1.3
192.168.2.1
192.168.2.22
192.168.2.3
192.168.3.1
192.168.3.22
192.168.3.3
192.168.5.1
192.168.5.22
192.168.5.3

示例: 取出/etc/目录下文件最大的前5个

$ ll /etc | sort -rnk5 | head -5

示例: 以.为分隔符对第3列和第4列排序

$ cat a.txt

192.168.1.1
192.168.1.22
192.168.1.3
192.168.3.1
192.168.3.22
192.168.3.3
192.168.2.1
192.168.2.22
192.168.2.3
192.168.5.1
192.168.5.22
192.168.5.3

$ sort -t '.' -n -k3,3 -k4,4 a.txt

192.168.1.1
192.168.1.3
192.168.1.22
192.168.2.1
192.168.2.3
192.168.2.22
192.168.3.1
192.168.3.3
192.168.3.22
192.168.5.1
192.168.5.3
192.168.5.22

5.6.3 uniq

一、 uniq命令常用用法

uniq命令选项 命令说明
uniq -c 去重并显示次数(重复次数),一般和sort结合使用

二、 uniq命令示例

示例: 对a.txt文件的第三列和第四列进行排序并显示重复地址次数

$ cat a.txt

192.168.1.1
192.168.1.22
192.168.1.3
192.168.3.1
192.168.3.22
192.168.3.3
192.168.2.1
192.168.2.22
192.168.2.3
192.168.5.1
192.168.5.22
192.168.5.3
192.168.5.1
192.168.5.22
192.168.1.1
192.168.1.22
192.168.1.3

$ sort -t '.' -n -k3,3 -k4,4 a.txt | uniq -c

      2 192.168.1.1
      2 192.168.1.3
      2 192.168.1.22
      1 192.168.2.1
      1 192.168.2.3
      1 192.168.2.22
      1 192.168.3.1
      1 192.168.3.3
      1 192.168.3.22
      2 192.168.5.1
      1 192.168.5.3
      2 192.168.5.22

5.7 Linux查询位置命令

查询位置相关命令 命令说明
which 查询命令的位置
whereis 查询命令及相关文件的位置

5.7.1 which

一、 which命令常用用法

which命令选项 命令说明
which 命令 查询命令的位置(绝对路径)

二、 which命令示例

示例: 显示wc命令的位置

$ which wc

5.7.2 whereis

一、 whereis命令常用用法

whereis命令选项 命令说明
whereis 命令 查询命令及相关文件的位置

二、 whereis命令示例

示例: 显示wc命令的位置及相关文件的位置

$ whereis wc

5.8 Linux文件比较命令

文件比较相关命令 命令说明
diff 对比文件
vimdiff 对比文件

5.8.1 diff

一、 diff命令常用用法

diff命令选项 命令说明
diff 第一个文件 第二个文件 对比两个文件差别

二、 diff命令示例

示例: 编写两个文件用于比较的文件

$ vim a.txt
1
2
3
4

$ vim b.txt
1
23
22

示例: 使用diff命令进行比较

$ diff a.txt b.txt

2,4c2,3
< 2
< 3
< 4
---
> 23
> 22

输出内容说明:

  • a.txt 文件中,行号 2 到 4 包含了数字 2、3 和 4
  • b.txt 文件中,行号 2 和 3 包含了数字 23 和 22
  • a.txt 中的行号 2 和 3 中的数字 2 和 3 被替换为 b.txt 中的行号 2 和 3 中的数字 23 和 22

5.8.2 vimdiff

一、 vimdiff命令常用用法

vimdiff命令选项 命令说明
vimdiff 第一个文件 第二个文件 对比两个文件差别

二、 vimdiff命令示例

示例: 编写两个文件用于比较的文件

$ vim a.txt
1
2
3
4

$ vim b.txt
1
23
22

使用vimdiff命令进行比较

$ vimdiff a.txt b.txt

vimdiff-1

输出内容说明:

  • 两个文件不同已通过不同的颜色进行标注

5.9 Linux时间命令

系统时间相关命令 命令说明
date 主要用于查看日期或获取日期
ntpdate 同步时间
timedatectl 设置系统时间与日期
文件时间相关命令 命令说明
stat 用于显示文件的状态信息,包括文件时间及文件属性

5.9.1 date

一、 date命令常用用法

date命令选项 命令说明
date +%F
date %Y-%m-%d
显示年-月-日
date -d '时间修改要求' 根据说明修改时间
date -s '指定要修改成的时间' 手动修改时间

二、 date命令示例

示例: 按照指定格式显示时间或日期,格式为年-月-日

$ date +%F
$ date +%Y-%m-%d

示例: 按照时:分:秒显示当前时间

$ date +%T
$ date +%H:%M:%S

示例: 显示一天前的时间

$ date -d '-1day'

示例: 显示一天前的时间,格式为年-月-日

$ date -d '-1day' +%F

示例: 手动修改时间

$ date -s '20550101'

示例: 创建一个以时间为名的备份文件

$ touch `date +%F`.txt

5.9.2 ntpdate

一、 ntpdate命令常用用法

ntpdate命令选项 命令说明
ntpdate ntp1.aliyun.com 和阿里云服务器1进行时间同步
ntpdate ntp2.aliyun.com 和阿里云服务器2进行时间同步
ntpdate ntp3.aliyun.com 和阿里云服务器3进行时间同步
ntpdate ntp4.aliyun.com 和阿里云服务器4进行时间同步
ntpdate ntp5.aliyun.com 和阿里云服务器5进行时间同步
ntpdate ntp6.aliyun.com 和阿里云服务器6进行时间同步
ntpdate ntp7.aliyun.com 和阿里云服务器7进行时间同步

二、 ntpdate命令示例

示例: 提前使用date -s 21000101手动修改成错误时间

$ date -s 21000101

示例: 安装时间同步命令

$ yum install -y ntpdate

示例: 时间同步

$ ntpdate ntp1.aliyun.com

示例: 再次查看真实时间

$ date 

5.9.3 timedatectl

一、 timedatectl命令常用用法

timedatectl命令选项 命令说明
ntpdate ntp1.aliyun.com 和阿里云服务器1进行时间同步
ntpdate ntp2.aliyun.com 和阿里云服务器2进行时间同步
ntpdate ntp3.aliyun.com 和阿里云服务器3进行时间同步
ntpdate ntp4.aliyun.com 和阿里云服务器4进行时间同步
ntpdate ntp5.aliyun.com 和阿里云服务器5进行时间同步
ntpdate ntp6.aliyun.com 和阿里云服务器6进行时间同步
ntpdate ntp7.aliyun.com 和阿里云服务器7进行时间同步

二、 timedatectl命令示例

示例: 查看目前时区

$ timedatectl status

示例: 修改为上海时区

$ timedatectl set-timezone   Asia/Shanghai

5.9.4 stat

一、 stat命令常用用法

stat命令选项 命令说明
stat 文件 查看文件属性

二、 stat命令示例

示例: 查看/etc/hosts文件属性

$ stat /etc/hosts

5.10 Linux打包压缩命令(打包压缩三剑客)

打包压缩相关命令 命令说明
tar 压缩解压,压缩包以.tar.gz结尾的
gzip 压缩解压,压缩包以.gz结尾的
zip/unzip 压缩解压,压缩包以.zip结尾的

5.10.1 tar

一、 tar命令常用用法

tar命令选项 命令说明
tar zcf 压缩包 被压缩的文件/目录 创建压缩包
tar tf 压缩包 查看压缩包
tar xf 压缩包 解压压缩包到当前目录
tar xf 压缩包 解压后的存放目录 解压压缩包到指定目录

注意:使用tar命令打包的目标目录或文件尽量换成相对路径,并且压缩后源文件依旧存在.

二、 tar命令示例

示例: 把/etc/目录压缩,压缩包放在/tmp/etc.tar.gz

$ tar zcvf   /tmp/etc.tar.gz /etc/

参数说明:

  • z:通过gzip压缩工具进行压缩
  • c:创建包(打包),如果只放cf选项就是打包,不压缩
  • v:显示过程,一般不加
  • f:指定压缩包

示例: 查看/tmp/etc.tar.gz压缩包

$ tar tf /tmp/etc.tar.gz

参数说明:

  • t:列表
  • f:指定压缩包

示例: 解压压缩包/tmp/etc.tar.gz到当前目录

$ tar xf /tmp/etc.tar.gz

参数说明:

  • x:解压
  • f:指定压缩包

示例: 解压压缩包/tmp/etc.tar.gz到/tmp目录下面

$ tar xf /tmp/etc.tar.gz -C /tmp/

参数说明:

  • x:解压
  • f:指定压缩包
  • C:指定解压目录

5.10.2 gzip

一、 gzip命令常用用法

gzip命令选项 命令说明
gzip 被压缩的文件/目录 创建压缩包
gzip -d 压缩包 解压压缩包到当前目录

注意:使用gzip命令压缩后,原文件不存在

二、 gzip命令示例

示例: 把a.txt文件压缩

$ gzip a.txt

示例: 把gzip -d文件解压

$ gzip -d a.txt.gz

5.10.3 zip/unzip

一、 zip/unzip命令常用用法

zip/unzip命令选项 命令说明
zip 压缩包 被压缩的文件 压缩文件
zip -r 压缩包 被压缩的目录 压缩目录
unzip -t 压缩包(以.zip命令结尾的) 查看解压包内容
unzip 压缩包 解压

注意:使用zip/unzip命令只能处理.zip格式的压缩包,.tar无法处理.zip格式的压缩包

二、 zip/unzip命令示例

示例: 压缩a.txt文件为a.txt.zip

$ zip a.txt.zip a.txt

示例: 压缩/etc目录

$ zip -r etc.zip /etc

示例: 查看a.zip压缩包内容

$ unzip -t a.zip

示例: 解压a.zip

$ unzip a.zip

5.11 Linux别名与用户管理命令

别名相关命令 命令说明
alias 设置别名
用户管理相关命令 命令说明
useradd 创建用户
passwd 修改密码
su 切换用户
userdel 删除用户
usermod 用于修改用户信息
id 查询用户的uid,gid,用户组信息,检查用户是否存在
whoami 查询当前用户的名字
w(替代uptime) 查看当前登录的用户的信息
last 显示用户的登录情况
lastlog 显示所有用户最近1次登录情况
sudo 授权普通用户执行管理员命令
visudo( vim /etc/sudoers) 打开/etc/sudoers文件进行编辑设置sudo
用户组管理相关命令 命令说明
groupadd 创建用户组

5.11.1 alias

一、 alias命令常用用法

alias命令选项 命令说明
alias 查看所有别名
alias 命令 查看指定命令对应的别名

二、 gzip命令示例

示例: 输出所有别名

$ alias

示例: 临时设置rm命令别名(新开窗口会失效)

$ alias rm='echo rm is dangerous,please use mv.'

示例: 永久设置rm命令别名(新开窗口不会失效)

#修改/etc/profile文件,在最后一行添加rm='echo rm is dangerous,please use mv.'
$ vim /etc/profile
...
...
rm='echo rm is dangerous,please use mv.'

#注释掉~/.bashrc里面已经配置的别名
$ vim /etc/profile
#alias rm='rm -i' 

#让配置文件生效
$ source /etc/profile

5.11.2 useradd

一、 useradd命令常用用法

useradd命令选项 命令说明
useradd -u 用户uid 用户 指定用户uid
useradd -s 命令解释器 用户 指定命令解释器,默认是/bin/bash
useradd -M 用户 单纯创建用户,但是不创建家目录
useradd -g 用户组名 用户名 设置用户的初始用户组
useradd -G 用户组名1, 用户组名2 用户名 设置用户的附加用户组,允许用户属于多个用户组

二、 useradd命令示例

示例: 添加用户mysql

$ useradd mysql

示例: 创建用户mysql指定uid 1314指定命令解释器/sbin/nologin不创建家目录,创建虚拟用户

$ useradd  -u 1314 -s /sbin/nologin -M   mysql

示例: 创建新用户mysql888并将其添加到用户组mysqlgroup

#如果没有用户组mysqlgroup,则需要提前创建
$ groupadd mysqlgroup
$ useradd -g mysqlgroup mysql888

示例: 创建新用户mysql666并将其添加到用户组mysqlgroup1mysqlgroup2mysqlgroup3

#如果没有用户组mysqlgroup1、mysqlgroup2、mysqlgroup3,则需要提前创建
$ echo 'mysqlgroup1 mysqlgroup2 mysqlgroup3' |xargs -n1 groupadd
$ useradd -G mysqlgroup1,mysqlgroup2,mysqlgroup3 mysql666

5.11.3 passwd

一、 passwd命令常用用法

passwd命令选项 命令说明
passwd 用户 交互式修改用户密码
echo "密码" | passwd --stdin 用户 非交互式修改密码,用于批量修改密码(只能root用)

二、 passwd命令示例

示例: 交互式修改用户mysql密码

$ passwd mysql

示例: 非交互式修改用户mysql密码为12345

$ echo 12345 |passwd mysql

5.11.4 su

一、 su命令常用用法

su命令选项 命令说明
su - 用户 完全切换用户(更新用户的配置与环境变量)

二、 su命令示例

示例: 完全切换用户mysql

$ su - mysql

可按ctrl + d快捷键退出当前用户

说明:root切换普通用户不需要输入普通用户密码;反之需要输入root密码

5.11.5 userdel

一、 userdel命令常用用法

userdel命令选项 命令说明
userdel 用户 仅仅删除用户,不删除家目录
userdel -r 用户 删除用户及家目录

二、 userdel命令示例

示例: 仅删除用户mysql

$ userdel mysql

示例: 删除用户mysql及其家目录

$ userdel -r mysql

5.11.6 usermod

一、 usermod命令常用用法

usermod命令选项 命令说明
usermod -s 命令解释器 用户 修改用户登录后使用的Shell终端(用户必须存在)
usermod -G 组名 用户 修改用户所属的扩展群
usermod -G ' ' 用户 把用户从root组踢出

二、 usermod命令示例

示例: 修改mysql用户命令解释器为/bin/bash

$ usermod -s /bin/bash mysql

示例: 修改mysql用户属于root组

$ usermod -G root mysql

示例: 把用户mysql从root组踢出

$ usermod -G ' ' mysql

5.11.7 id

一、 id命令常用用法

id命令选项 命令说明
id 用户 查询用户的uid,gid,用户组信息,检查用户是否存在

二、 id命令示例

示例: 查看用户mysql的uid,gid,用户组信息

$ id mysql

5.11.8 whoami

一、 whoami命令常用用法

whoami命令选项 命令说明
whoami 查看当前登录用户名字

二、 whoami命令示例

示例: 查看当前登录用户名字

$ whoami

5.11.9 w

一、 w命令常用用法

w命令选项 命令说明
w 显示已登录用户的信息

二、 w命令示例

示例: 显示已登录用户的信息

$ w

14:21:13 up 1 day, 22:27,  2 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     tty1                      14:19    1:45   0.01s  0.01s -bash
root     pts/1    192.168.1.108    Fri16     ?     0.20s  0.00s w

上面回显信息说明如下:

  • 14:21:13:当前系统时间。
  • up 1 day, 22:27:系统已经运行了1天22小时27分钟。
  • 2 users:当前有2个用户登录。
  • load average: 0.00, 0.01, 0.05:系统的负载平均值。这个值表示系统的繁忙程度,分别对应1分钟、5分钟和15分钟的平均负载。在这个示例中,系统的负载很低。

  • USER:用户的登录名。

  • TTY:终端类型或伪终端号。
  • FROM:用户的登录来源,可以是IP地址或终端类型。如果为空或-代表本地登录;如果是IP地址代表远程登录
  • LOGIN@:用户登录的时间。
  • IDLE:用户的登录会话空闲时间。
  • JCPU:用户的累计CPU时间(以分钟为单位)。
  • PCPU:用户的当前CPU占用百分比。
  • WHAT:用户正在运行的命令或程序。

5.11.10 last

一、 last命令常用用法

last命令选项 命令说明
last 显示所有用户的登录信息

二、 last命令示例

示例: 显示所有用户的登录信息

$ last

5.11.11 lastlog

一、 lastlog命令常用用法

lastlog命令选项 命令说明
lastlog 显示所有用户最近1次的登录信息

二、 lastlog命令示例

示例: 查看所有用户最近1次的登录信息

$ lastlog

5.11.12 sudo

一、 sudo命令常用用法

sudo命令选项 命令说明
sudo 命令 普通用户执行授权命令
sudo -l 查看当前用户有什么sudo权限(一般在最后2行体现)

二、 sudo命令示例

示例: 普通用户执行授权命令vim

$ sudo vim a.txt

示例: 查看当前用户有什么sudo权限

$ sudo -l

5.11.13 visudo

一、 visudo命令常用用法

visudo命令选项 命令说明
visudo 使用root用户给普通用户授权

二、 visudo命令示例

示例: 给普通用户mysql授权cat命令

$ visudo
#第100行后面添加
mysql   ALL=(ALL) /bin/cat

示例: 给运维人员创建普通用户

$ visudo
#第100行后面添加
mysql   ALL=(ALL) NOPASSWD: ALL

5.11.14 groupadd

一、 groupadd命令常用用法

groupadd命令选项 命令说明
groupadd -g 888 mysql 创建组并指定gid

二、 groupadd命令示例

示例: 创建uid,gid都为888 的mysql虚拟用户

$ groupadd -g 888 mysql
$ useradd -u 888 -g mysql -s /sbin/nologin -M mysql

5.12 Linux权限管理命令

文件权限命令 命令说明
chmod 使用数字或字母形式修改权限
chown 修改文件所有者,用户组
文件/目录特殊属性命令 命令说明
lsattr 用于查看文件和目录的特殊属性
chattr 用于修改文件和目录的特殊属性

5.12.1 文件权限命令·

5.12.1.1 chmod

一、 chmod命令常用用法

chmod命令选项 命令说明
chmod 数字权限 文件 使用数字形式修改权限
chmod 字符权限 文件 使用字符形式修改权限
chmod u+s 文件/目录 通过字符设置用户ID
chmod 4755 目录 通过权限数字设置用户ID
chmod g+s 目录 通过字符设置用户组ID
chmod 2755 目录 通过权限数字设置用户组ID
chmod o+t 目录 通过字符设置粘滞位
chmod 1777 目录 通过权限数字设置

二、 chmod命令示例

示例: 修改a.txt的权限为755

$ chmod 755 a.txt

示例: 给a.sh添加执行权限

$ chmod +x a.sh

示例: 给/etc/rc.d/rc.local(所有位置)增加执行权限

$ chmod a+x /etc/rc.d/rc.local

示例: 给/etc/rc.d/rc.local文件所有者增加执行权限

$ chmod u+x /etc/rc.d/rc.local
$ chmod u=x /etc/rc.d/rc.loca

示例: 通过字符给a.txt文件设置用户ID

$ chmod u+s a.txt

示例: 通过权限数字给a.txt文件设置用户ID

$ chmod 4755 a.txt

示例: 通过字符给a.txt文件设置用户组ID

$ chmod g+s a.txt

示例: 通过权限数字给a.txt文件设置用户组ID

$ chmod 2755 a.txt

示例: 通过字符给/tmp/目录设置粘滞位

$ chmod o+t /tmp/

示例: 通过权限数字给/tmp/目录设置粘滞位

$ chmod 1777 /tmp/

5.12.1.2 chown

一、 chown命令常用用法

chown命令选项 命令说明
chown 文件所有者.用户组 文件(其中前面的.可以替换成:) 修改文件所有者,用户组
chown 字符权限 文件 使用字符形式修改权限

二、 chown命令示例

示例: 修改a.txt所有者和用户组为mysql(用户mysql需要存在)

$ chown mysql:mysql  a.txt

5.12.2 文件/目录特殊属性命令

5.12.2.1 lsattr

一、 lsattr命令常用用法

lsattr命令选项 命令说明
lsattr 文件/目录 用于查看文件和目录的特殊属性

二、 lsattr命令示例

示例: 查看a.txt文件的特殊属性

$ lsattr a.txt

5.12.2.2 chattr

一、 chattr命令常用用法

chattr命令选项 命令说明
chattr +a 文件/目录 设置追加位。当追加位设置在文件上时,只有文件的内容可以被追加,但不能被修改或删除。
chattr -a 文件/目录 取消设置追加位。
chattr +i 文件/目录 设置不可修改位。当不可修改位设置在文件上时,文件的内容不能被修改、删除,甚至超级用户也无法更改它。
chattr -i 文件/目录 取消设置不可修改位。

二、 lsattr命令示例

示例: 修改a.txt文件的特殊属性为只能追加

$ chattr +a a.txt 

示例: 取消a.txt文件的特殊属性为只能追加

$ chattr -a a.txt 

示例: 修改a.txt文件的特殊属性为不可修改位

$ chattr +i a.txt 

示例: 修改a.txt文件的特殊属性为不可修改位

$ chattr -i a.txt 

5.13 Linux系统管理命令

软件包管理命令 命令说明
rpm 用于在Linux系统下对软件包进行安装、卸载、查询、验证、升级等工作
yum 用于在Linux系统中基于RPM技术进行软件包的管理工作
dpkg 用于管理软件安装包
进程管理命令 命令说明
ps 静态:ps查看当前瞬间进程状态,一般用于临时检查或取值
top 动态:top动态,交互,整体查看系统状态,负载,僵尸进程,cpu,内存. 类似于windows任务管理器
htop top命令升级版,支持鼠标操作(htop是epel源中的命令,需要提前配置epel源)
& 常用的后台运行方法
nohup 命令 & 与&类似,会记录输出到文件中默 认叫nohup.out
screen命令 通过软件创建空间,让命令在这个空间运行
kill kill + 进程pid进行结束进程,常用

5.13.1 Linux软件包管理命令

5.13.1.1 rpm

一、 rpm命令常用用法

rpm命令选项 命令说明
rpm -ivh 包名 安装rpm包,其中命令选项说明:
-i:安装软件包
-v:显示过程
-h:人类可读显示过程
rpm -qa 包名 查看软件包是否安装,其中命令选项说明:
-q:显示指定软件包是否已安装
-a:显示所有软件包
rpm -ql 包名 查看软件包内容,其中命令选项说明:
-q:显示指定软件包是否已安装
-l:显示软件包的文件列表
rpm -qf 包名 查看文件或命令所归属的软件包,其中命令选项说明:
-q:显示指定软件包是否已安装
-f:显示文件或命令属于哪个软件包
rpm -Uvh 包名 升级软件包(如果软件包不存在,相当是ivh安装),其中命令选项说明:
-U:更新
-v:显示过程
-h:人类可读显示过程
rpm -e 包名 删除软件包

二、 rpm命令示例

示例: 安装软件包zabbix-agent2

$ rpm -ivh zabbix-agent2-6.0.0-1.el7.x86_64.rpm

示例: 检查软件包是否安装成功

$ rpm -qa |grep zabbix
$ rpm -qa zabbix-agent2

示例: 查看已经安装成功的软件包的内容

$ rpm -ql zabbix-agent2

示例: 查询某个命令或文件属于哪个软件包,这里以wget命令进行演示

$ which wget
/bin/wget

$ rpm -qf /bin/wget
wget-1.14-18.el7_6.1.x86_64

示例: 升级新版本6.0.7的rpm包

$ rpm -Uvh /opt/tools/zabbix-agent2-6.0.7-1.el7.x86_64.rpm

示例: 卸载6.0.7的rpm包

$ rpm -e zabbix-agent2-6.0.7-1.el7.x86_64
$ rpm -e zabbix-agent2

5.13.1.2 yum

一、 yum命令常用用法

yum命令选项 命令说明
yum install -y bash-completion bash-completion-extras 安装命令补全工具
yum install -y 软件包 安装软件包(包含依赖)
yum reinstall -y 软件包 重新安装软件包(包含依赖)
yum provides 命令或文件 检查软件/搜索软件
yum search all 命令或文件 检查软件/搜索软件
yum repolist 查看yum源信息
yum list 显示所有yum仓库中所有软件,未来用于根据软件包名字查找
yum remove 软件包 删除软件包(同时删除依赖),建议使用rpm -e删除
yum clean all 清空缓存,一般自建yum仓库需要使用
yum update/upgrade 更新

二、 yum命令示例

示例: 安装tree软件包

$ yum install -y tree

示例: 重新安装tree软件包

$ yum reinstall -y tree

示例: 查看tree命令所属软件包

$ yum provides tree

示例: 查看tree命令所属软件包,不推荐使用,回显内容太多,需要一个个测试

$ yum search all  tree

示例: 查看yum源信息

$ yum repolist

示例: 显示所有yum仓库中所有软件

$ yum list

示例: 升级或更新

$ yum update
$ yum upgrade

示例: 删除tree软件包(同时删除依赖)

$ yum remove tree

示例: 删除tree软件包(不删除依赖)

$ rpm -e tree-1.6.0-10.el7.x86_64

5.13.1.3 dpkg

一、 dpkg命令常用用法

dpkg命令选项 命令说明
dpkg -l 检查是否安装软件包,其中命令选项说明:
-l:显示已安装的软件包列表
dpkg -i 包名 安装软件包,其中命令选项说明:
-i:安装软件包
dpkg -L 包名 检查软件包内容,其中命令选项说明:
-L:显示与软件包关联的文件
dpkg -r 包名 删除软件包,其中命令选项说明:
-r:删除软件包

二、 dpkg命令示例

示例: 安装指定的软件包

$ dpkg -i File.deb

示例: 卸载指定的软件包

$ dpkg -r File.deb

示例: 列出当前已安装的软件列表

$ dpkg -l

示例: 检查软件包内容

$ dpkg -L File.deb

5.13.2 Linux进程管理命令

5.13.2.1 ps

一、 ps命令常用用法

ps命令选项 命令说明
ps -ef 显示当前系统运行状态中进程信息,其中命令选项说明:
-e:显示环境变量信息
-f:用ASCII字符显示树状结构
ps aux 查看系统中全部的进程信息,含详细信息,其中命令选项说明:
-a:显示所有进程信息
-u:使用用户为主的格式来显示程序状态
-x:不区分终端机

二、 ps命令示例

示例: 显示当前系统运行状态中进程信息

$ ps ef

示例: 查看系统中全部的进程信息,含详细信息

$ ps aux

示例: 过滤出crond进程信息

$ ps -ef |grep crond
$ ps aux |grep crond

示例: 按照树形结构查看进程信息并输出pid

$ pstree -p

上面参数说明:

  • pstree: 这是用于显示进程树的命令。
  • -p: 该选项指示 pstree 显示每个进程的PID。

也可以展示部分所属关系,没有pstree直观

$ ps auxf

上面参数说明:

  • ps: 显示当前进程状态的命令。
  • aux: 选项用于显示所有用户的所有进程,包括其他细节信息,例如进程的用户、CPU使用率、内存占用等。
  • f: 这个选项显示进程的树状结构,包括父进程和子进程的关系。

示例: 求取出ps命令结果中第一列和第三列

$ ps aux | awk  '{print $1,$3}'

上面参数说明:

  • ps aux:列出系统上所有进程的详细信息。
  • |:管道符,将 ps aux 的输出传递给下一个命令。
  • awk '{print $1,$3}':使用 Awk 命令处理 ps aux 的输出,仅打印每行的第一个(用户名)和第三个字段(CPU使用率)。

示例: 指定输出内容user,%cpu,stat

$ ps axo user,%cpu,stat

上面参数说明:

  • a: 显示所有用户的进程,而不仅仅是当前用户的进程。
  • x: 显示无控制终端的进程,通常是后台进程。
  • o user,%cpu,stat: 自定义输出格式,指定要显示的列,包括用户(USER)、CPU使用率(%CPU)、以及进程状态(STAT)。

示例: 求取出ps命令结果中第一列和第三列,并且不显示标题

$ ps aux |awk 'NR>1{print $1,$3}'

上面参数说明:

  • ps aux:列出所有进程的详细信息。
  • awk 'NR>1{print $1,$3}'awk命令用于处理ps命令的输出。NR>1 表示从第2行开始处理,以跳过标题行。然后,print $1,$3 打印每行的第1列(用户)和第3列(CPU占用率)。

示例: 取出某一个服务(crond)的进程信息(pid,%cpu,%mem,command)

$ ps aux |grep  'crond' |awk '{print $2,$3,$4,$11}'

同样可以使用

$ ps --no-heading  -o pid,%cpu,%mem,command  -C crond

上面参数说明:

  • --no-heading:表示不显示列标题。
  • -o pid,%cpu,%mem,command:指定显示的列,包括进程ID(pid)、CPU占用率(%cpu)、内存占用率(%mem)、以及命令行(command)。
  • -C crond:限制输出为仅包括指定名称的进程,这里是 crond

示例: 取出某一个服务(crond)的进程信息中最后一列

$ ps aux |grep  'crond' |awk '{print $NF}'

示例: 取出某一个服务(crond)的进程信息中倒数第二列

$ ps aux |grep  'crond' |awk '{print $(NF-1)}'

示例: 取出所有进程中内存使用率最高的前5

$ ps --no-heading aux |sort -rnk4 |head -5

上面参数说明:

  • ps: 用于显示当前系统中运行的进程信息。
  • --no-heading: 禁用了列标题,使输出更加紧凑。
  • aux: 显示所有用户的所有进程,包括不与终端相关的进程。
  • |: 将 ps 的输出通过管道传递给下一个命令。
  • -r: 表示逆序排列,即从高到低排列。
  • -n: 表示按数值进行排序,而不是字典顺序。
  • -k4: 表示按第4列进行排序,即 %MEM 列,以确定内存使用量。
  • head -5: 仅显示前5行,也就是前5个占用内存最多的进程。

5.13.2.2 top

一、 top命令常用用法

top命令选项 命令说明
top -bn1 显示当前系统运行状态中进程信息,其中命令选项说明:
-b:非交互模式
-n:只输出1次结果

二、 top命令示例

示例: 只输出1次top回显内容的第二行

$ top -bn1 | awk 'NR==2'

上面参数说明:

  • top: 启动系统监控工具top
  • |: 通过管道将top的输出传递给下一个命令。
  • awk 'NR == 2': 使用awk命令,NR表示记录号,这里是指行号。NR == 2表示只选择第二行的内容。

示例: top运行在非交互模式,显示第2行内容中倒数第一列和倒数第二列内容

$ top -bn1 |awk 'NR ==2{print $(NF-1),$NF}'

上面参数说明:

  • top -bn1:运行 top 命令,其中 -b 选项表示以批处理模式运行,n1 表示运行一次后退出。
  • |:通过管道将 top 命令的输出传递给下一个命令。
  • awk 'NR == 2{print $(NF-1),$NF}':使用 awk 命令,NR == 2 表示只选择第二行的内容。$(NF-1) 表示倒数第二个字段,通常是系统的平均负载值之一,$NF 表示最后一个字段,通常也是平均负载值之一。这个命令的目的是提取这两个值并打印它们。

5.13.2.3 &

一、 &命令常用用法

&命令选项 命令说明
命令 & 命令后台运行

二、 &命令示例

示例: 让sleep 999命令后台运行

$ sleep 999 &

5.13.2.4 nohup

一、 &命令常用用法

nohup命令选项 命令说明
nohup 命令 & 可以保留输出到指定文件中,默认是nohup.out文件。其他方面与&符号一致。

二、 &命令示例

示例: 让ping baidu.com命令后台运行并记录输出

$ nohup ping -c 2 baidu.com &

5.13.2.5 screen

一、 &命令常用用法

screen命令选项 命令说明
screen 进入screen虚拟窗口
Ctrl+A,然后按 d 在进入screen虚拟窗口输入命令后,将会话切换到后台
screen -ls 用于列出当前系统中所有正在运行的 GNU Screen 会话
screen -r GNU Screen会话的标识符 重新附加Detached会话

二、 &命令示例

示例: 进入screen虚拟窗口执行命令

$ yum install -y screen
$ screen
$ ping baidu.com

示例: 列出当前系统中所有正在运行的 GNU Screen 会话

$ screen -ls

示例: 恢复,使用 screen -r 命令来重新附加到一个 "Detached" 会话,以便重新获得对该会话的控制权。

$ screen -r 21649.pts-0.k8s-master01 

5.13.2.6 kill

一、 &命令常用用法

kill命令选项 命令说明
kill + 进程pid 默认发送结束信号
kill -9 + 进程pid 发送强制结束信号(别用kill -9结束数据库)

二、 &命令示例

示例: 杀死远程服务进程

$ ps aux | grep /usr/sbin/sshd | grep -v grep
root       1535  0.0  0.0 112900  4340 ?        Ss   Oct13   0:00 /usr/sbin/sshd -D

$ kill 1535

示例: 强制杀死远程服务进程

$ kill -9 1535