一、Linux进程管理工具
pstree、 ps、 pgrep、 pkill、 killall、 uptime、 top、 htop、 vmstat、 lsof
1、pstree
用于查看进程数之间的关系,即那个进程是父进程,哪个是子进程,可以清楚的看出来是谁创建了谁
语法
# pstree [选项]
选项
选项 | 作用 |
---|---|
- A | 各进程树之间的连接以ASCII码字符连接 |
- U | 各进程树之间的连接以UTF-8字符连接,某些终端可能会显示错误 |
- p | 同时列出每个进程的PID |
- u | 同时列出每个进程的所属账号名称 |
实例
# yum install psmisc -y //先安装命令
centos 6
centos 7
2、ps
语法
# ps [选项]
选项
选项 | 作用 |
---|---|
- A | 所有的进程均显示出来,与 - e有相同作用 |
- a | 显示现行终端机下的所有进程,包括其他用户的进程 |
- u | 以用户为主的进程状态 |
- x | 通常与 - a这个参数一起使用,可列出较完整信息 |
输出格式规划 | |
- l | 较长、较详的将该PID的信息列出 |
- j | 工作的格式(jobs format) |
- f | 做一个更为完整的输出 |
实例
列出当前执行机下的进程
3、pgrep
经常查看进程信息,包括进程是否已经消亡,通过pgrep来火的正在被调度的进程的相关信息。pgrep通过匹配其程序名,找到匹配的进程
语法
# pgrep [选项] pidname
选项
选项 | 作用 |
---|---|
- l | 同时显示进程名和PID |
- o | 匹配到多个进程时,显示进程号最小的 |
- n | 匹配到多个进程时,显示进程号最大的 |
注 | 进程号越大,不一定意味着进程的启动时间就越晚 |
实例
注:通常情况下,pgrep和kill连用,在指定条件下kill问题进程
# pgrep [选项] pidname //先查找进程号
# kill [选项] pid //用kill 结束进程
4、kill killall pkill
(1)kill
语法
# kill [选项] pid //kill + 进程号
选项
选项 | 作用 |
---|---|
- l | 列出所有信号参数 |
- a | 当处理当前进程时,不限制命令名和进程号的对应关系 |
- p | 指定kill命令只打印相关进程的进程号,而不发送任何信号 |
- s | 指定发送信息 |
- u | 指定用户 |
实例
列出信号详情
一般常用的信号
信号 | 作用 |
---|---|
HUP (1) | 终端断线 |
INT (2) | 中断(同crtl +c) |
QUIT (3) | 退出(同crtl + \) |
TERM (15) | 终止 |
KILL (9) | 强制终止 |
CONT (18) | 继续(与stop相反,fg / bg命令) |
STOP (19) | 暂停(同crtl + z) |
(2)pkill、killall
pkill是ps与kill结合的命令,按照进程名杀死指定进程,pkill和killall用法差不多,都是直接杀死进程。
语法
# pkill/killall [选项] pid //pkill/killall + 进程号
5、htop
htop是top的升级版,大家可能对top比较熟悉,但相比top有很多自身优势
- 两者相比,top比较繁琐
- 默认支持图形界面的鼠标操作
- 可以横向或纵向滚动浏览进程列表,以便看到所有进程和完整的命令行
- 杀进程时不需要输入进程号等
//虚拟机上没有该命令,先安装。
# yum install epel* -y //安装epel源
# yum install htop -y //安装htop
实例
各项解释
- F1:显示帮助信息
- F2:配置界面中的显示信息
- F3:搜索进程
- F4:过滤器
- F5:以树形方式显示
- F6:排序方式
- F7:减小nice值
- F8:增大nice值
- F9:杀死进程
- F10:退出htop
6、vmstat
vmstat命令是最常见的linux/unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存的交换情况,IO读写情况。这个命令是我查看linux/unix最喜欢的命令,一个是linux/unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)
一般vmstat工具的使用是通过两个数字参数来完成的,第一份参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数
语法
# vmstat [选项]
选项
选项 | 作用 |
---|---|
- V | 显示vmstat版本信息 |
- n | 只在开始时显示一次各字段名称 |
- a | 显示活跃和非活跃内存 |
- d | 显示各个磁盘相关统计信息 |
- D | 显示磁盘总体信息 |
- p | 显示指定磁盘分区统计信息 |
- s | 显示内存相关统计信息及多种系统活动数量 |
- m | 显示slabinfo |
- t | 在输出信息的时候也将时间一并输出 |
- S | 使用指定单位显示。参数有k、K、m、M 分别代表1000、1024、1000000、1048576字节。默认单位是 K (1024bytes) |
delay | 刷新时间间隔。如果不指定,只显示一条结果 |
count | 刷新次数。如果不指定刷新次数,但制定了刷新时间间隔,这时刷新次数为无穷 |
实例
以上字段含义
类别 | 选项 | 含义 | 说明 |
---|---|---|---|
Process | r | 等待执行的任务数 | 展示了正在执行和等待CPU资源的任务个数。当这个值超过了CPU个数,就会出现CPU瓶颈 |
B | 等待IO的进程数量 | ||
Memory | swpd | 正在使用虚拟的内存大小,单位k | 值大于0表示物理内存已经不足,需要考虑升级内存 |
free | 空闲内存大小 | 指物理内存 | |
buff | 已用的buff大小,对块设备的读写进行缓冲 | ||
cache | 已用的cache大小,文件系统的cache | 指的是page cached内存大小 | |
nact | 非活跃内存大小,即被表明可回收的内存,区别于free和active | ||
active | 活跃的内存大小 | ||
Swap | si | 每秒从交换分区写入内存的大小(单位:kb/s) | 表示有磁盘调入内存,也就是内存进入内存交换分区的内存大小;通俗的讲就是每秒从磁盘读入内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄漏了,要查看内存进程解决掉 |
so | 每秒从内存写到交换分区的大小 | 表示由内存进入磁盘,也就是由内存交换区进入内存的内存大小 | |
IO | bi | 每秒读取的块数(读磁盘) | 现在的linux版本块的大小为1024bytes |
bo | 每秒写入的块数(写磁盘) | 如果bi+bo的值过大,且wa值较大,则表示系统磁盘IO瓶颈 | |
System | in | 每秒中断数,包括时钟中断 | 值越大,会看到由内核消耗的CPU时间会越多 |
cs | 每秒上下文切换数 | 值越大,会看到由内核消耗的CPU时间会越多 | |
CPU | Us | 用户进程执行消耗CPU时间(user time) | us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超过50%的使用,那么我们就该考虑优化程序算法或其他措施 |
Sy | 系统进程消耗CPU时间(system time) | sys的值过高时,说明系统内核消耗的CPU资源多,这不是良性的表现,我们应该检查原因。一般来说us+sy应该小于80%,如果大于80%,说明内存可能存在CPU瓶颈 | |
id | 空闲时间(包括IO等待时间) | ||
wa | 等待IO时间 | wa过高时,说明IO等待比较严重,这可能是由于磁盘大量随机访问造成的,也有可能是磁盘的带宽出现瓶颈 |
注意:
如果评估CPU,需要重点关注procs项的 r 列值和CPU项的us,sy,wa列的值