一、Linux进程管理工具
pstree、 ps、 pgrep、 pkill、 killall、 uptime、 top、 htop、 vmstat、 lsof
1、pstree:用于查看进程数之间的关系,即那个进程是父进程,哪个是子进程,可以清楚的看出来是谁创建了谁
a、语法
pstree [选项]
b、选项
选项 | 作用 |
---|---|
- A | 各进程树之间的连接以ASCII码字符连接 |
- U | 各进程树之间的连接以UTF-8字符连接,某些终端可能会显示错误 |
- p | 同时列出每个进程的PID |
- u | 同时列出每个进程的所属账号名称 |
c、实例
# yum install psmisc -y //先安装命令
2、ps
a、语法
# ps[选项]
b、选项
选项 | 作用 |
---|---|
- A | 所有的进程均显示出来,与 - e有相同作用 |
- a | 显示现行终端机下的所有进程,包括其他用户的进程 |
- u | 以用户为主的进程状态 |
- x | 通常与 - a这个参数一起使用,可列出较完整信息 |
输出格式规划 | |
- l | 较长、较详的将该PID的信息列出 |
- j | 工作的格式(jobs format) |
- f | 做一个更为完整的输出 |
c、实例
3、pgrep: 经常查看进程信息,包括进程是否已经消亡,通过pgrep来火的正在被调度的进程的相关信息。pgrep通过匹配其程序名,找到匹配的进程
a、语法
pgrep [选项] pidname
b、选项:(注意:进程号越大,不一定意味着进程的启动时间就越晚)
选项 | 作用 |
---|---|
- l | 同时显示进程名和PID |
- o | 匹配到多个进程时,显示进程号最小的 |
- n | 匹配到多个进程时,显示进程号最大的 |
c、实例
4、kill killall pkill
(1)kill:
a、语法
kill[选项]pid
b、选项
选项 | 作用 |
---|---|
- l | 列出所有信号参数 |
- a | 当处理当前进程时,不限制命令名和进程号的对应关系 |
- p | 指定kill命令只打印相关进程的进程号,而不发送任何信号 |
- s | 指定发送信息 |
- u | 指定用户 |
c、实例
d、常用信号
信号 | 作用 |
---|---|
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
6、vmstat: vmstat命令是最常见的linux/unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存的交换情况,IO读写情况。这个命令是我查看linux/unix最喜欢的命令,一个是linux/unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)一般vmstat工具的使用是通过两个数字参数来完成的,第一份参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数。
a、语法:
vmstat[选项]
b、选项
选项 | 作用 |
---|---|
- V | 显示vmstat版本信息 |
- n | 只在开始时显示一次各字段名称 |
- a | 显示活跃和非活跃内存 |
- d | 显示各个磁盘相关统计信息 |
- D | 显示磁盘总体信息 |
- p | 显示指定磁盘分区统计信息 |
- s | 显示内存相关统计信息及多种系统活动数量 |
- m | 显示slabinfo |
- t | 在输出信息的时候也将时间一并输出 |
- S | 使用指定单位显示。参数有k、K、m、M 分别代表1000、1024、1000000、1048576字节。默认单位是 K (1024bytes) |
delay | 刷新时间间隔。如果不指定,只显示一条结果 |
count | 刷新次数。如果不指定刷新次数,但制定了刷新时间间隔,这时刷新次数为无穷 |
c、实例
字段含义
类别 | 选项 | 含义 | 说明 |
---|---|---|---|
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等待比较严重,这可能是由于磁盘大量随机访问造成的,也有可能是磁盘的带宽出现瓶颈 |