第3章 进阶bash shell命令
3.1 监测程序
3.1.1 探查进程
当程序运行在系统上时,我们称之为进程(process)
注意:shell也只是运行在系统上的一个程序而已
ps [选项] //输出显示进程信息
常用选项:
-A 显示系统中所有进程的信息
-a 显示所有用户进程的信息
-e 选项作用和-a类似
-f 完整的显示进程的所有信息
-l 以长格式显示进程信息
-r 只显示正在运行的进程
-u 显示面向用户的格式
-x 显示所有非控制终端上的进程信息
-p 显示由进程ID指定的进程信息
-t 显示指定终端上的进程的信息
-f 选项 扩展的列包含以下有用的信息:
- UID:启动这些进程的用户
- PID:进程的进程ID号
- PPID:父进程的进程ID号
- C:进程生命周期中的CPU利用率
- STIME:进程启动时的系统时间
- TTY:进程启动时的终端设备
- TIME:运行进程需要的累计CPU时间
- CMD:启动的程序名称
-l 选项 多出的列包含以下有用的信息(不同风格的shell输出可能会不一样):
-
F:内核分配给进程的系统标记
-
S:进程的状态(O代表正在运行;S代表在休眠;R代表可运行,正等待 运行;Z代表僵化,进程已完成但父进程没响应;T代表停止)
-
PRI:进程的优先级(数字越大优先级越低)
-
NI:谦让度用来参与决定优先级
-
VSZ:进程在内存中的大小,以KB为单位
-
RSS:进程在未换出时占用的物理内存
-
STAT:代表当前进程状态的双字符状态码(第一个字符采用了和Unix风格S列相同的值,第二个字符进一步说明进程的状态:
· <:该进程运行在高优先级上
· N:该进程运行在低优先级上
· L:该进程有页面锁定在内存中
· s:该进程是控制进程(在我的会话中,它是主要进程)
· l:该进程是多线程的
· +:该进程运行在前台
-
ADDR:进程的内存地址
-
SZ:假如进程被换出,所需交换空间的大致大小
-
WCHAN:进程休眠的内核函数的地址
pstree [选项] //以继承关系(树状结构)查看进程信息
常用选项:
-a 显示完整的继承关系,如果是被内存置换出去的进程则会加上括号
-c 如果有重复的进程名,则分开列出(默认值会在前面加上 *)
pid|user 查看指定根进程(pid)或用户(user)所拥有的进程
3.1.2 实时监测进程
ps 命令虽然在收集运行在系统上的进程信息时非常有用,但它只能显示某 个特定时间点的信息,而 top 命令就能够实时显示进程信息
以下是top命令运行时输出的截图:
输出的第一部分显示的是系统的概况:第一行显示了当前时间、系统的运 行时间、登录的用户数以及系统的平均负载
说明 平均负载有3个值:最近1分钟的、最近5分钟的和最近15分钟的。数值越大说明系统的负载越高。由于进程短期的突发性活动,出现最近1分钟的高负载值也很常见,但如果近15分钟内的平均负载都很高,就说明系统可能有问题。通常,如果系统的负载值超过了2,就说明系统比较繁忙了。
第二行显示了进程的概要信息——top命令输出中将进程叫做任务(task): 有多少进程处在运行、休眠、停止或是僵化状态(进程完成了但父进程没响 应)。下一行显示了CPU的概要信息。
紧跟其后的两行说明了系统内存的状态。第一行说的是系统的物理内存: 总共有多少内存,当前用了多少,还有多少空闲。后一行说的是同样的信息, 不过是针对系统交换空间的状态而言的。
最后一部分显示了当前运行中的进程的详细列表:
- VIRT:进程占用的虚拟内存总量
- RES:进程占用的物理内存总量
- SHR:进程和其他进程共享的内存总量
- %CPU:进程使用的CPU时间比例
- %MEM:进程使用的内存占可用内存的比例
3.1.3 结束进程
kill [信号代码] PID //对相应pid的进程进行对应信号代码的操作
killall 进程名 //支持通过进程名(可搭配通配符使用)来结束进程
警告 使用killall命令要小心,因为很容易会误用通配符结束了重要的系统进程,这可能会破坏文件系统。
3.2 监测磁盘空间
如第2章中讨论的,Linux文件系统将所有的磁盘都并入一个虚拟目录下。在 使用新的存储媒体前,需要把它放到虚拟目录下。这项工作称为挂载(mounting)
mount [选项] 设备名 挂载点 //挂载设备到挂载点
umount 设备名|挂载点 //卸载设备
当设备处于“ busy ”状态,即在被使用时,不能进行卸载操作。
此时可以用fuser命令查看正在使用该文件系统的用户信息
fuser [选项] 设备名|挂载点 //用于查看正在使用该文件系统的用户信息
常用选项:
-a 显示所有在命令行中指定的文件系统信息
-k 杀死访问文件的进程
-i 在杀死使用文件的用户进程之前向用户确认提示
-u 显示使用文件系统的进程的所有者信息
-v 像ps命令显示文件的使用者信息
3.3 查看系统信息命令
- 查看Linux内核版本的命令:uname -r 或 -a
- 查看文件系统的磁盘空间大小和剩余空间大小的命令:df
- 查看文件数据占用量的命令:du
- 显示系统已经运行了多长时间的命令:uptime( 将依次显示:现在时间、系统已运行时长、当前登录用户数、系统在过去1分钟、5分钟、15分钟内的平均负载)
- 查看当前系统内存使用情况的命令:free
- 查看登录日志信息的命令:last
- 显示月历或年历的命令:cal
- 显示或设置系统当前日期和时间的命令:date(再用 “clock -w” 保存)
3.4 处理数据文件
3.4.1 排序数据
sort [选项] 文件名 //对文件内容进行排序
常用选项:
-n 把数字识别成数字而不是字符,且按值排序
-M 将含有时间戳的文件按月份排序
-f 忽略大小写排序,默认情况下会将大写字母排序在前
-r 降序排序,默认升序
-k --key=POS1[,POS2] 从POS1位置开始排序,到POS2结束
-t 指定字段分隔符
3.4.2 搜索数据
grep [选项] 关键字 查找范围 //类似于windows系统的Ctrl+F功能
常用选项:
-n 输出的同时打印行号
-m NUM次匹配后停止
3.4.3 压缩和归档数据
目前,Unix和Linux上最广泛使用的归档工具是tar命令
TAR包管理工具有5种基本功能:打包、查询、释放、更新、追加
tar [选项] 文件|目录 //一个文件管理工具,选项众多
常用选项:
-c 创建新的TAR包,打包备份也适用这个选项
-t 列出TAR包中文件的列表,查看包中已备份的文件
-x 从TAR包中释放文件,解压缩
-r 把要备份的文件追加到已备份文件的末尾
-f 使用备份文件或设备,这个选项通常是必选的
-v 详细报告tar命令处理的文件信息,这个选项通常也是必选的
-z 用gzip来压缩/解压缩文件
-j 用bzip2来压缩/解压缩文件
-w 每次操作都要求确认
-C 用于指定文件解压后的存放路径
3.5 小结
本章讨论了Linux会用到的一些进阶命令。ps和top命令在判断系统的状态时 特别重要。
在可移动存储普及的今天,另一个常谈的话题就是挂载存储设备。
最后,本章讨论了各种处理数据的工具。sort工具便于组织数据;grep工具 能快速检索大数据文件来查找特定信息。Linux上有一些不同的文件压缩工具,包括bzip2、gzip和zip。TAR工具能将整个目录都归档到单个文件中,还支持压缩文件节省系统空间,也方便数据的迁移。
本章节涉及命令:ps、pstree、top、kill、killall、mount、umount、fuser、uname、df、du、uptime、free、last、cal、date、sort、grep、tar
据文件来查找特定信息。Linux上有一些不同的文件压缩工具,包括bzip2、gzip和zip。TAR工具能将整个目录都归档到单个文件中,还支持压缩文件节省系统空间,也方便数据的迁移。
本章节涉及命令:ps、pstree、top、kill、killall、mount、umount、fuser、uname、df、du、uptime、free、last、cal、date、sort、grep、tar