更多的 bash shell 命令

本章内容:

  • 进程管理
  • 获取磁盘统计信息
  • 挂载新磁盘
  • 数据排序
  • 数据归档

一、监测进程

1.1 探查进程

当程序在系统中运行时,它被称为进程(process),想要监测这些进程,就必须要熟悉 ps 命令。

  • ps 命令默认只显示运行在当前终端中属于当前用户的那些进程。

  • ps 常用命令选项

选项描述
-A显示所有进程。
-w采用宽输出格式,不限宽度显示。
-au显示较详细的资讯。
-aux显示所有包含其他使用者的进程。
-ef-e:指定显示系统中运行的所有进程 ;-f:扩充输出内容以显示一些有用的信息列。
  • 应用示例
# 1.输出系统中运行的所有进程的信息列。
[root@VM-8-11-centos ~]# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0  2022 ?        00:11:58 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root         2     0  0  2022 ?        00:00:06 [kthreadd]
root         4     2  0  2022 ?        00:00:00 [kworker/0:0H]
...
  • UID:启动进程的用户。
  • PID:进程ID。
  • PPID:父进程的PID(如果该进程是由另一个进程启动的)。
  • C:进程生命期中的CPU利用率。
  • STIME:进程启动时的系统时间。
  • TTY:进程是从哪个终端设备启动的。
  • TIME:运行进程的累计CPU时间。
  • CMD:启动的程序名称。

1.2 实时监测进程

ps 命令虽然在收集系统中运行进程的信息时非常有用,但它只能显示某个特定时间点的信息。如果想观察那些被频繁换入和换出内存的进程,ps 命令就不太方便了。这正是 top 命令的用武之地,它与 ps 命令相似,top 命令也可以显示进程信息,但采用的是实时方式。

  • top 常用命令选项
选项描述
-H显示线程信息。
  • 应用示例
# 1.监测实时进程。
[root@VM-8-11-centos ~]# top
top - 14:20:26 up 156 days,  3:15,  1 user,  load average: 0.20, 0.19, 0.19
Tasks: 175 total,   1 running, 174 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.5 us,  1.5 sy,  0.0 ni, 95.6 id,  0.3 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3880172 total,   168136 free,  3074520 used,   637516 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   514776 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                 
  657 root      20   0 1283140  65136  17360 S   2.0  1.7   3303:50 kubelet                                                                                                                 
 4649 root      20   0  499340 270096  15228 S   1.7  7.0   3720:39 kube-apiserver 
  • 输出的第一部分显示的是系统概况
    • 第一行:显示了当前时间、系统的运行时长、登录的用户数以及系统的平均负载(平均负载有3个值,分别是最近1分钟、5分钟、15分钟的平均负载,值越大说明系统的负载越高,由于进程短期的突发性活动,出现最近1分钟的高负载值也很常见。但如果近15分钟内的平均负载都很高,就说明系统可能有问题了)。
    • 第二行:显示了进程概况:多少进程处于运行、休眠、停止以及僵化状态(僵化状态指进程已结束,但其父进程没有响应)。
    • 第三行:显示了CPU概况top 会根据进程的属主(用户或是系统)和进程的状态(运行、空闲或等待)将CPU利用率分成几类输出。
    • 随后紧跟的两行:详细说明了系统内存的状态(前一行显示了系统的物理内存的状态,后一行显示了系统交换空间的状态)。
  • 输出的最后一部分显示了当前处于运行状态的进程的详细列表(类似 ps 命令):
    • PID:进程PID。
    • USER:进程属主的用户名。
    • PR:进程的优先级。
    • NI:进程的谦让度。
    • VIRT:进程占用的虚拟内存总量。
    • RES:进程占用的物理内存总量。
    • SHR:进程和其他进程共享的内存总量。
    • S:进程的状态(D代表可中断的休眠,R代表运行,S代表休眠,T代表被跟踪或停止,Z代表僵化)。
    • %CPU:进程使用的CPU时间比例。
    • %MEM:进程使用的可用物理内存比例。
    • TIME+:自进程启动到目前为止所占用的CPU时间总量。
    • COMMAND:进程所对应的命令行名称,也就是启动的程序名。

1.3 结束进程

用户对 top 命令输出有很大的控制权,利用好该工具能找出占用系统大量资源的罪魁祸首,当然,找到之后,下一步就是结束这些进程。在 Linux 中有两个命令可以向运行中的进程发出进程信号:killpkill

  • 使用说明
  • kill 常用命令选项
选项描述
-l <信息编号>若不加<信息编号>选项,则 -l 参数会列出全部的信息名称。
-1 (HUP)重新加载进程。
-9 (KILL)杀死一个进程。
-15 (TERM)正常停止一个进程。
  • 应用示例
# 1.强彻底杀死进程。
[root@VM-8-11-centos ~]# kill -9 2526
  • kill 命令杀死指定进程 PID,需要配合 ps 使用,而 pkill 直接对进程对名字进行操作(允许使用通配符),更加方便。
  • 应用示例
# 1.该命令将杀掉所有名称以`http`起始的进程。
[root@VM-8-11-centos ~]# pkill http*
  • 注意事项:以 root 身份使用 pkill 命令时要格外小心,避免使用通配符意外地将系统的重要进程终止,导致文件系统损坏

二、监测磁盘空间

2.1 挂载存储设备

Linux 文件系统会将所有的磁盘都并入单个虚拟目录。在使用新的存储设备之前,需要将其放在虚拟目录中。这项工作称为挂载(mounting)。

  • mount 常用命令选项
选项描述
-o给文件系统添加特定的选项。
-o ro以只读模式挂载。
-o rw以可读写模式挂载。
-o loop使用 loop 模式用来将一个档案当成硬盘分割挂上系统。
-o user、-o nouser使用者可以执行 mount / umount 的动作。
-o check=none挂载文件系统时不执行完整性校验。
  • 应用示例
# 1.将 /tmp/image.iso 这个光碟的 image 档使用 loop 模式挂在 /mnt/cdrom 之下。
[root@VM-8-11-centos ~]# mount -o loop /tmp/image.iso /mnt/cdrom

移除可移动设备时,不能直接将设备拔下,应该先卸载

  • umount 常用命令选项
选项描述
-v执行时显示详细的信息。
  • 应用示例1
# 1.通过设备名卸载。
[root@VM-8-11-centos ~]# umount -v /dev/sda1
  • 应用示例2
# 1.通过挂载点卸载。
[root@VM-8-11-centos ~]# umount -v /mnt/mymount/
  • 注意事项:如果有任何程序正在使用设备上的文件,则系统将不允许卸载该设备。

2.2 使用 df 命令

有时需要知道在某台设备上还有多少磁盘空间df 命令可以方便地查看所有已挂载磁盘的使用情况。

  • df 常用命令选项
选项描述
-h以人类易读的形式显示磁盘(通常用M来替代兆字节,用G来替代吉字节)。
  • 应用示例
# 1.设备磁盘使用情况。
[root@VM-8-11-centos ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        1.9G     0  1.9G   0% /dev
tmpfs           1.9G   24K  1.9G   1% /dev/shm
tmpfs           1.9G  1.8M  1.9G   1% /run
...
  • 注意事项df 命令输出值反映的是 Linux 系统认为的当前值。正在运行的进程有可能创建或删除了某个文件,但尚未释放该文件,则这个值是不会被计算进闲置空间的。

2.3 使用 du 命令

df 命令,很容易发现哪个磁盘存储空间不足。接下来,就是如何应对这种情况,du 命令可以显示某个特定目录(默认情况下是当前目录)的磁盘使用情况,有助于你快速判断系统中是否存在磁盘占用“大户”。

  • du 常用命令选项
选项描述
-c显示所有已列出文件的总大小。
-h按人类易读格式输出大小,分别用 K 表示千字节、M 表示兆字节、G 表示吉字节。
-s输出每个参数的汇总信息。
  • 应用示例
[root@VM-8-11-centos tmp]# pwd
/tmp
# 1.当前目录磁盘使用情况。
[root@VM-8-11-centos tmp]# du -sh
32K	.

三、处理数据文件

3.1 数据排序

处理大量数据时需要对数据进行排序,此时就会用到一个常用命令 sort

  • sort 命令会根据锁指定的默认语言的排序规则来对文本文件中的数据进行排序。

  • sort 常用命令选项

选项描述
[-k field1[ field2 ]]按照指定的列进行排序
-n将字符串按数值意义排序
-r逆序排序(升序变降序)
-t指定字段分隔符
  • 应用示例
# 1.sort -nr:哪些文件占用磁盘空间最多。
[root@VM-8-11-centos resources]# du -sh * | sort -nr
92K	io
24K	META-INF
4.0K	registry.conf
4.0K	README-zh.md
4.0K	README.md
4.0K	logback.xml
4.0K	file.conf.example
4.0K	file.conf

3.2 数据搜索

经常需要在大文件中查找位于文件中间部分某处的数据行,可以使用 grep 命令来帮助查找

  • grep 命令会在输入或指定文件中逐行搜索匹配指定模式的文本。
  • grep 常用命令选项
选项描述
-v反向搜索。
-n显示匹配指定模式的那些行的行号。
-c统计多少行。
-e指定多个匹配模式。
  • 应用示例
# 1.当前文本内容。
[root@VM-8-11-centos tmp]# cat test.txt 
111
222
333
hello
444
555

# 2.匹配存在的字符串有多少行。
[root@VM-8-11-centos tmp]# grep -c "hello" test.txt 
1

# 3.匹配不存在的字符串。
[root@VM-8-11-centos tmp]# grep -c "hello111" test.txt 
0

3.3 数据压缩

Linux 包含多种文件压缩工具

工具名文件拓展名描述
bzip2.bz2采用 Burrows-Wheeler 块排序文本压缩算法和霍夫曼编码。
compress.Z最初的 Unix 文件压缩工具。
gzip.gzGNU 压缩工具,用 Lempel-Zivwelch 编码。
xz.xz日渐流行的通用压缩工具。
zip.zipWindows 中 PKZIP 工具的 Unix 实现。
  • 应用示例
# 1.当前文本文件。
[root@VM-8-11-centos test]# ll
total 4
-rw-r--r-- 1 root root  0 May  7 16:47 myTest1.txt
-rw-r--r-- 1 root root  0 May  7 16:47 myTest.txt

# 2.使用 gzip 命令压缩指定文件(可以指定多个文件名或是用通配符来一次性压缩多个文件)。
[root@VM-8-11-centos test]# gzip my*
[root@VM-8-11-centos test]# ls -l my*
-rw-r--r-- 1 root root 32 May  7 16:47 myTest1.txt.gz
-rw-r--r-- 1 root root 31 May  7 16:47 myTest.txt.gz

3.4 数据归档

目前,Unix 和 Linux 中最流行的归档工具是 tar 命令。

  • tar 常用命令选项
选项描述
-c创建新的 tar 归档文件。
-x从 tar 归档文件中提取文件。
-f将结果输出到文件(或设备)。
-v在处理文件时显示文件名。
-z将输出传给 gzip 命令进行压缩。
  • 应用示例1
# 1.当前目录的文本文件。
[root@VM-8-11-centos tmp]# ll
total 0
-rw-r--r-- 1 root root 0 May  7 17:02 1.txt
-rw-r--r-- 1 root root 0 May  7 17:06 2.txt

# 2.创建归档文件。
[root@VM-8-11-centos tmp]# tar -cvf test.tar *.txt
1.txt
2.txt

# 3.归档结果。
[root@VM-8-11-centos tmp]# ll
total 12
-rw-r--r-- 1 root root     0 May  7 17:02 1.txt
-rw-r--r-- 1 root root     0 May  7 17:06 2.txt
-rw-r--r-- 1 root root 10240 May  7 17:07 test.tar
  • 应用示例2
[root@VM-8-11-centos tmp]# ll
total 12
-rw-r--r-- 1 root root     0 May  7 17:02 1.txt
-rw-r--r-- 1 root root     0 May  7 17:06 2.txt
-rw-r--r-- 1 root root 10240 May  7 17:07 test.tar

# 1.当前目录下只保留一个tar包。
[root@VM-8-11-centos tmp]# rm -rf *.txt
[root@VM-8-11-centos tmp]# ll
total 12
-rw-r--r-- 1 root root 10240 May  7 17:07 test.tar

# 2.提取tar包内容。
[root@VM-8-11-centos tmp]# tar -xvf test.tar 
1.txt
2.txt

# 3.提取后结果。
[root@VM-8-11-centos tmp]# ll
total 12
-rw-r--r-- 1 root root     0 May  7 17:02 1.txt
-rw-r--r-- 1 root root     0 May  7 17:06 2.txt
-rw-r--r-- 1 root root 10240 May  7 17:07 test.tar
  • 提示:在下载开源软件时经常会看到文件名以 .tgz 结尾,这是经 gzip 压缩过的 tar 文件,可以用 tar -zxvf filename.tgz 来提取其中的内容。

四、结束语


“-------怕什么真理无穷,进一寸有一寸的欢喜。”

微信公众号搜索:饺子泡牛奶

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值