1.监测程序
1.1 ps命令
ps命令可以用来检测系统进程。
$ ps
PID TTY TIME CMD
314 pts/0 00:00:00 bash
407 pts/0 00:00:00 ps
默认的ps命令只显示运行在当前终端中属于当前用户的进程。如上当前在运行的进程有bash和ps。
- PID:进程ID
- TTY:运行终端
- TIME:占用CPU时间
- CMD:进程名
ps命令支持3种命令行选项:
- Unix风格选项,选项前加单连接字符-
- BSD风格选项,选项前不加连接字符
- GNU长选项,选项前加双连接字符–
其中Unix风格较为常用,它源自贝尔实验室AT&T Unix系统的ps命令
选项 | 描述 |
---|---|
-A | 显示所有进程 |
-N | 显示与指定参数不符的所有进程 |
-a | 显示除控制进程和无终端进程外的所有进程 |
-d | 显示除控制进程外的所有进程 |
-e | 显示所有进程 |
-C cmdlist | 显示包含在cmdlist列表中的进程 |
-G grplist | 显示组ID在grplist列表中的进程 |
-U userlist | 显示属主的用户ID在userlist列表中的进程 |
-g grplist | 显示会话或组ID在grplist列表中的进程 |
-p pidlist | 显示PID在pidlist列表中的进程 |
-s sesslist | 显示会话ID在sesslist列表中的进程 |
-t ttylist | 显示终端ID在ttylist列表中的进程 |
-u userlist | 显示有效用户ID在userlist列表中的进程 |
-F | 显示更多的额外输出 |
-O format | 显示默认的输出列以及format列表指定的特定列 |
-M | 显示进程的安全信息 |
-c | 显示进程的额外的调度器信息 |
-f | 显示完整格式的输出 |
-j | 显示作业信息 |
-l | 显示长列表 |
-o format | 仅显示由format指定的列 |
-y | 不显示进程标志 |
-Z | 显示安全上下文信息 |
-H | 以层级格式显示进程 |
-n namelist | 定义要在WCHAN输出列中显示的值 |
-w | 采用宽输出格式,不限宽度显示 |
-L | 显示进程中的线程 |
-V | 显示ps命令的版本号 |
$ ps -efl #以完整格式显示所有进程信息
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 1 0 0 80 0 - 42546 - 21:32 ? 00:00:00 /sbin/init
5 S root 2 1 0 80 0 - 614 - 21:32 ? 00:00:00 /init
0 S root 5 2 0 80 0 - 621 - 21:33 ? 00:00:00 plan9 --control-socket 6 --log-level 4 --
4 S root 97 1 0 79 -1 - 8939 - 21:33 ? 00:00:00 /lib/systemd/systemd-journald
4 S root 127 1 0 80 0 - 5579 - 21:33 ? 00:00:00 /lib/systemd/systemd-udevd
4 S systemd+ 148 1 0 80 0 - 4771 - 21:33 ? 00:00:00 /lib/systemd/systemd-networkd
5 S root
...
其中各列的含义如下:
- F:内核分配给进程的系统标志
- S:进程状态
- O:正在运行
- S:休眠
- R:可运行
- Z:僵化,已终止单未找到父进程
- T:停止
- UID:启动该进程的用户
- PID:进程ID
- PPID:父进程PID
- C:进程生命周期中的CPU利用率
- PRI:进程优先级,数字越大,优先级越低
- NI:谦让度(Nice),用于决定优先级
- ADDR:进程的内存地址
- SZ:进程被换出时所需要交换空间的大致大小
- WCHAN:进程休眠的内核函数地址
- STIME:进程启动时的系统时间
- TTY:启动进程的终端设备
- TIME:运行进程的累计CPU时间
- CMD:进程名称
1.2 top命令
注意
ps命令只能显示某时刻的进程状态信息,无法显示实时的进程状态信息。
使用top命令可以查看系统中进程的实时状态信息。
$ top
###第一部分显示系统概况
#第一行显示当前时间,系统运行时长、登录的用户数和系统的平均负载
top - 22:11:24 up 38 min, 0 users, load average: 0.00, 0.00, 0.00
#第二行显示进程概况:运行、休眠、停止和僵化的进程个数
Tasks: 34 total, 1 running, 33 sleeping, 0 stopped, 0 zombie
#第三行显示CPU概况
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
#最后两行显示系统内存状态:物理内存总大小、空闲大小、使用大小和交换空间状态
MiB Mem : 11890.0 total, 10917.5 free, 491.0 used, 481.5 buff/cache
MiB Swap: 3072.0 total, 3072.0 free, 0.0 used. 11147.9 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 170184 13188 8412 S 0.0 0.1 0:00.60 systemd
2 root 20 0 2456 1332 1220 S 0.0 0.0 0:00.02 init-systemd(Ub
5 root 20 0 2484 1140 1092 S 0.0 0.0 0:00.00 init
97 root 19 -1 35756 13084 12088 S 0.0 0.1 0:00.15 systemd-journal
127 root 20 0 22316 8596 3904 S 0.0 0.1 0:00.22 systemd-udevd
148 systemd+ 20 0 19084 7784 6896 S 0.0 0.1 0:00.06 systemd-network
312 root 20 0 2460 112 0 S 0.0 0.0 0:00.00 SessionLeader
313 root 20 0 2476 116 0 S 0.0 0.0 0:00.01 Relay(314)
314 huzhou 20 0 10040 5068 3348 S 0.0 0.0 0:00.05 bash
315 root 20 0 5700 4020 3252 S 0.0 0.0 0:00.01 login
338 huzhou 20 0 10024 4824 3276 S 0.0 0.0 0:00.03 bash
1.3 kill命令
使用kill命令可通过PID向进程发送信号,需注意,必须使用属主或root用户才能发送进程信号
Linux进程信号
信号 | 名称 | 描述 |
---|---|---|
1 | HUP | 挂起 |
2 | INT | 中断 |
3 | QUIT | 结束运行 |
9 | KILL | 无条件终止 |
11 | SEGV | 段错误 |
15 | TERM | 尽可能终止 |
17 | STOP | 无条件停止运行,但不终止 |
18 | TSTP | 停止或暂停,但继续在后台运行 |
19 | CONT | 在STOP或TSTP之后回复执行 |
$ kill 647
-bash: kill: (647) - Operation not permitted
$ kill -s 647 #强制终止PID为647的进程
pkill命令可使用程序名代替PID,也允许使用通配符
$ pkill http* #终止所有名称以http起头的进程
注意
以root身份运行pkill时要格外小心,命令中的通配符很容易将系统的重要进程终止,可能导致系统损坏。
2.检测磁盘空间
2.1 mount命令
当系统接入新的存储设备时,需使用mount命令将其放入虚拟目录中,及挂载。
$ mount -t ext4 #过滤已挂载的ext4文件系统分区
/dev/sdc on / type ext4 (rw,relatime,discard,errors=remount-ro,data=ordered)
/dev/sdc on /mnt/wslg/distro type ext4 (ro,relatime,discard,errors=remount-ro,data=ordered)
/dev/sdc on /snap type ext4 (rw,relatime,discard,errors=remount-ro,data=ordered)
mount命令默认输出当前系统已挂载的设备列表,mount命令提供了4部分信息
- 设备文件名
- 设备在虚拟目录中的挂载点
- 文件系统类型
- 已挂载设备的访问状态
手动挂载设备的基本命令格式为:
mount -t type device directory
例如将U盘/dev/sdb1挂载到/media/disk:
$ mount -t vfat /dev/sdb1 /media/disk
mount 命令选项
选项 | 描述 |
---|---|
-a | 挂载/etc/fstab文件中指定的所有文件系统 |
-f | 模拟挂载设备,但并不真正的挂载 |
-F | 和-a选项一起使用时,同时挂载所有文件系统 |
-v | 详细模式,显示挂载设备的每一步操作 |
-i | 不适应/sbin/mount.filesystem下的任何文件系统协助文件 |
-l | 自动给ext2、ext3、ext4或XFS文件系统添加文件系统标签 |
-n | 挂载设备,但不在/etc/mtab已挂载设备文件中注册 |
-p num | 进行加密挂载时,从文件描述符num中获得口令 |
-s | 忽略该文件系统不支持的挂载选项 |
-r | 将设备挂载为只读 |
-w | 将设备挂载为可读写(默认选项) |
-L label | 将设备按指定label挂载 |
-U uuid | 将设备按指定的uuid挂载 |
-O | 和-a选项一起使用,限制其所作用的文件系统 |
-o | 给文件系统添加特定选项 |
其中-o选项允许挂载文件系统时添加一系列以,分割的额外选项,常用选项如下:
- ro:以只读形式挂载
- rw:以读写形式挂载
- user:允许普通用户挂载文件系统
- check=none:挂载文件系统时不执行完整性校验
- loop:挂载文件
2.2 umount命令
与mount挂载相对的,使用umount命令卸载设备(再将设备拔下)。
umount directory | device
2.3 df命令
使用df命令可以很方便的查看所有已挂载磁盘的使用情况:
$ df -t ext4 -t vfat #查看ext4 和vfat文件系统使用情况
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sdc 1055762868 102000296 900059100 11% /
- 设备文件位置
- 包含多少个以1024字节为单位的块
- 使用了多少以1024字节为单位的块
- 还有多少以1024字节为单位的块可用
- 已用空间所占的百分比
- 设备挂载点
$ df -h #以(human-readable)人类可读的方式显示所有文件系统使用情况
Filesystem Size Used Avail Use% Mounted on
/dev/sdc 1007G 98G 859G 11% /
rootfs 5.9G 2.1M 5.9G 1% /init
none 5.9G 0 5.9G 0% /dev
none 5.9G 0 5.9G 0% /dev/shm
tmpfs 5.9G 0 5.9G 0% /sys/fs/cgroup
none 5.9G 940K 5.9G 1% /run
none 5.9G 0 5.9G 0% /run/lock
none 5.9G 80K 5.9G 1% /run/user
none 119G 74G 45G 63% /usr/lib/wsl/drivers
none 5.9G 0 5.9G 0% /usr/lib/wsl/lib
none 5.9G 4.0K 5.9G 1% /mnt/wsl
none 5.9G 76K 5.9G 1% /mnt/wslg/versions.txt
none 5.9G 76K 5.9G 1% /mnt/wslg/doc
snapfuse 64M 64M 0 100% /snap/core20/2105
snapfuse 92M 92M 0 100% /snap/lxd/24061
snapfuse 64M 64M 0 100% /snap/core20/2015
snapfuse 41M 41M 0 100% /snap/snapd/20290
snapfuse 41M 41M 0 100% /snap/snapd/20671
drvfsa 119G 74G 45G 63% /mnt/c
drvfsa 300G 98G 203G 33% /mnt/d
drvfsa 450G 169G 282G 38% /mnt/e
drvfsa 182G 156G 26G 86% /mnt/g
2.4 du命令
使用du命令可以显示某个特定目录的大小,以磁盘块为单位
$ du -h bin/ #以人类可读方式显示bin文件夹的大小
4.0K bin/
du常用的选项包括:
- -c:显示所有已列出文件的总大小
- -h:以人类可读格式输出大小,K表示千字节,M表示兆字节,G表示吉字节
- -s:输出每个参数的汇总信息。
3.处理数据文件
3.1 sort命令
使用sort命令进行数据排序
$ cat test.txt #查看test.txt文件内容
one
two
three
four
five
1
2
100
45
3
$ sort test.txt #对test.txt文本内容进行排序显示
1
100
2
3
45
five
four
one
three
two
sort命令按字符首字母的先手顺序排序。
$ sort -n test.txt #test.txt中数字按大小排序
five
four
one
three
two
1
2
3
45
100
sort常用选项
选项 | 描述 |
---|---|
-b | 排序时忽略起始空白字符 |
-f | 字符小写转成大写 |
-g | 按一般数值大小排序 |
-M | 按三字符月份排序 |
-h | 按人类可读大小排序,如2K 1G |
-n | 根据字符串数值大小排序 |
-R | 随机哈希排序 |
-r | 逆序排序 |
-V | 按文本中的版本号自然排序 |
3.2 grep命令
使用grep命令逐行查找文件中的数据
$ grep t test.txt #查找test.txt中t字符相关内容
two
three
grep常用参数
- -v:反向搜索
$ grep -v t test.txt
one
four
five
1
2
100
45
3
- -n:显示搜索结果所在行号
$ grep -n t test.txt
2:two
3:three
- -c:显示匹配内容的行数
$ grep -c t test.txt
2
- -e:逐个指定多个匹配模式
$ grep -e t -e o test.txt
one
two
three
four
Linux包含多种文件压缩工具
工具 | 文件扩展名 | 描述 |
---|---|---|
bzip2 | .bz2 | 采用Burrows-Wheeler块排序文本压缩算法和霍夫曼编码 |
compress | .Z | 最初的Unix文本压缩工具,已经快无人使用 |
gzip | .gz | GNU压缩工具,采用Lempel-Zivwelch编码 |
xz | .xz | 日渐流行的通用压缩工具 |
zip | .zip | Windows中PKZIP工具的Unix实现 |
3.3 gzip命令
gzip软件包是GNU项目的产物,这个软件包包括
- gzip:压缩文件
- gzcat:查看压缩过的文本文件内容
- gunzip:解压文件
$ gzip file1
$ ls -l file*
-rw-r--r-- 1 huzhou huzhou 0 Jan 14 01:34 file.text
-rw-r--r-- 1 huzhou huzhou 26 Jan 17 23:42 file1.gz
3.4 tar命令
Linux使用tar命令进行归档
tar命令操作选项文章来源:https://www.toymoban.com/news/detail-803188.html
操作 | 长选项 | 描述 |
---|---|---|
-A | –concatenate | 将一个tar归档文件追加到另一个tar归档文件末尾 |
-c | –create | 创建新的tar归档文件 |
-d | diff | 检查归档文件和文件系统的差异 |
–delete | 从tar归档文件中删除文件 | |
-r | –append | 将文件追加到tar归档文件末尾 |
-t | –list | 列出tar归档文件的内容 |
-u | –update | 将tar归档文件中已有的同名文件更新的文件追加到该归档文件 |
-x | –extract | 从tar归档文件中提取文件 |
tar命令选项文章来源地址https://www.toymoban.com/news/detail-803188.html
选项 | 描述 |
---|---|
-C dir | 切换到指定目录 |
-f file | 将结果输出到文件或设备 |
-j | 将输出传给bzip2命令进行压缩 |
-J | 将输出传给xz命令进行压缩 |
-p | 保留文件的所有权限 |
-v | 在处理文本时显示文件名 |
-z | 将输出传给gzip命令进行压缩 |
-Z | 将输出传给compress命令进行压缩 |
#将test1和test2文件夹内容打包成test.tar
$ tar -cvf test.tar test1/ test2/
#解压test.tar
$ tar -xvf test.tar
到了这里,关于bash shell基础命令(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!