一、静态查看进程(ps)
1.概念
- ps命令可以查看当前系统中的进程
2.格式
- ps -l ==>只查看自己的进程
- ps aux ==>查看系统所有的进程
- ps -lA ==>查看系统所有的进程,格式与ps -l相同
- ps axjf ==>以进程树的方式查看系统中所有的进程
相关参数与选项
- -A:所有的进程都显示,与-e相同
- -a:不显示与终端有关的线程
- -u:有效使用者的相关线程
输出格式规则
- l:较长、较详细的将更多的信息显示出来
- j:任务的格式
- -f:做一个更为完整的输出
3.查看自己的进程:ps -l
- 注意事项:ps -l查看的当前终端有关的进程,父进程、子进程都会显示
F 进程标识,说明这个进程的权限。
常见的:4(代表是root权限的),1(表示子进程仅执行复制但没有实际执行)
S 进程的状态(STAT)。
R:进程正在运行
S:进程处于睡眠,但是可以被唤醒
D:不可唤醒的睡眠状态,通常这个进程可能在等待I/O的情况(ex>打印)
T:停止状态,可能是在任务控制(后台暂停)或跟踪状态
Z:僵尸状态。此进程已经终止但无法被删除至内存外
UID/PID/PPID 此进程的UID、PID、PPID C 代表CPU的使用率,单位为百分比 PRI/NI 代表此进程被CPU所执行的优先级,数值越小代表该进程越快被CPU执行 ADDR/SZ/WCHAN 都与内存有关
ADDR:代表该进程在内存的哪个部分,如果进程是running的,一般显示-
SZ:代表此进程占用了多少内存
WCHAN:表示目前进程是否运行,若为-代表在运行
TTY 登陆者的终端位置,若为远程登录则使用动态终端接口名称(pts/n) TIME 使用CPU的时间,但不是系统时间 CMD 触发此进程的命令是什么
4.以ps -l的格式查看系统所有的进程:ps -lA
- 显示的内容是系统所有的进程,信息分栏的格式是与ps -l相同的
5.查看系统所有的进程:ps aux
- 一般ps axu会依照PID来排序显示
USER/PID 此进程的用户和PID %CPU 进程占用CPU的百分比 %MEN 进程占用物理内存的百分比 VSZ 进程占用虚拟内存的量(KB) RSS 进程占用固定的内存量(KB) TTY 该进程在哪个终端登录的。若无终端显示?,若为ps/0..等一般是由网络连接进入主机的进程 STAT 该进程目前的状态
R:进程正在运行
S:进程处于睡眠,但是可以被唤醒
D:不可唤醒的睡眠状态,通常这个进程可能在等待I/O的情况(ex>打印)
T:停止状态,可能是在任务控制(后台暂停)或跟踪状态
Z:僵尸状态。此进程已经终止但无法被删除至内存外
START 该进程被触发启动的时间 TIME 该进程实际使用CPU的时间 COMMAND 触发该进程的命令
6.以进程树的方式显示进程:ps axjf
- 进程树会显示进程之间的关系,不过也可以使用后面的pstree来查看
7.僵尸进程
- 产生的原因:一般的原因是进程已经执行完毕,或者快要终止时,该进程的父进程缺无法完整地将该进程结束掉,造成该进程一直存在于内存中
- 如何消除:一般系统不稳定时会造成僵尸进程,如果想要消除这个僵尸进程一般要先找到父进程,然后好好做个追踪以进行优化。如果僵尸进程已经无法管理了,通常需要交给systemd(centos中)/init(ubuntu中)进程负责,但是systemd/init是系统中的第一个进城,它下面还有很多进程,因此不能直接杀死systemd/init进程。如果真的处理不了,只好通过reboot的方式来将进程kill掉
- 格式特点:使用ps查看时,如果COMMAND后面有defunct字样,代表这是个僵尸进程
格式演示:
root 576 0.0 0.0 19300 652 ? Ss 09:26 0:00 /usr/sbin/bluetoothd <defunct>
二、动态的查看进程(top)
1.命令格式
- top [-d 数字]
- top [选项]
相关参数与选项
- -d:后面接秒数,就是top查看进程界面的更新秒数
- -b:以批量的方式执行top,通常搭配数据流重定向将批量的结果输出到文件中
- -n:代表显示几次查看进程的结果。如果与-b配合使用,代表写入几次查看进程的结果
- -p:执行某个PID来执行查看监测而已
2.top内可以输入的命令
进入top之后,可以输入以下的按键来控制top,直接输入就可以了
- ?:显示在top当中可以输入的按键命令
- P:以CPU的使用率来排序结果
- M:以内存的使用率来排序结果
- N:以PID来排序
- T:由该进程使用的CPU时间累积排序
- k:给予某个PID一个信号
- r:给予某个PID重新制定一个nice值
- q:退出top
- 1:切换不同的CPU频率
3.注意事项
- top中默认以更新的秒数是5秒。默认以CPU的使用率来排序显示结果
4.查看top的内容格式
- 以每2秒更新一次top查看整体的进程信息
top显示的前5行的内容
- 第一行(top):当前的时间(14:52:10)。开机到现在的时间(up 8 min)。系统登录的人数(user)。load average:系统分别在1、5、15分钟内平均任务负载,值越小负载越小,大于1说明你的系统任务过于频繁
- 第二行(Tasks):目前进程的总量(total)和运行、睡眠、暂停、僵尸进程的数量
- 第三行(%Cpu):CPU的整体负载,每个项目可以使用?查看。特别需要注意那个wa项目,wa代表I/O wait,通常你的系统会变慢都是I/O产生的,因此要注意wa占用CPU的资源。另外,如果是多核设备可以按下1来切换不同的CPU负载率
- 第四行(Kib Mem):目前的物理内存使用情况
- 第五行(Kib Swap):目前虚拟内存的使用情况。swap的使用情况尽量要少,如果swap使用较多,代表你的物理内存不足
top下半部分显示的内容
- PID/USER:进程的PID和使用者
- PR:Priority的缩写,进程的优先执行顺序,越小则越早被执行
- NI:Nice的缩写,与Prority有关,也是越小则越早被执行
- %CPU:CPU的使用率
- %MEN:内存的使用率
- TIME+:CPU使用时间的累加
5.演示案例
- 案例一:将top的信息执行2次,然后将结果输出到/tmp/top.txt
- 案例二:只查看一个进程的信息
- 案例三:改变一个进程的NI值
- 第一步:查看当前的进程PID
- 第二步:查看此进程的信息
- 第三步:然后在top内输入r,输入之后出现这一行,让你输入进程的PID来修改哪个进程的NI值
- 第四步:我们输入3035,输入完之后回车
- 第五步:输入完之后,会让你输入NI值
- 第六步:我们输入10之后回车,可以看到NI改变了
三、以进程树的格式查看进程(pstree)
1.命令格式
- pstree [选项]
相关选项与参数
- -A:各进程树之间以ASCII字符来连接
- -U:各进程树之间以Unicode字符来连接
- -p:同时列出进程的所属PID
- -u:同时列出每个进程的所属账号
2.提示
- pstree可以很好的显示进程之间的父子关系
- 重点:centos中第一个进程是systemd,Ubuntu中第一个进程是init,这两个进程的PID都是1,因此系统会第一个调用这个进程,其他所有进程都是由这两个进程延伸出来的
3.演示案例
- 案例一:以ASCII字符方式显示进程树
- 案例二:同时显示每个进程的PID和用户名
- 括号内的为进程PID和该进程的用户名
- 如果该进程的用户名与就是父进程的用户名相同就不会显示用户名,只显示出PID