Linux(入门基础):90---进程的查看(ps、top、pstree命令)

时间:2024-05-24 07:33:40

一、静态查看进程(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查看的当前终端有关的进程,父进程、子进程都会显示

Linux(入门基础):90---进程的查看(ps、top、pstree命令)

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相同的

Linux(入门基础):90---进程的查看(ps、top、pstree命令)

5.查看系统所有的进程:ps aux

  • 一般ps  axu会依照PID来排序显示 

Linux(入门基础):90---进程的查看(ps、top、pstree命令)

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来查看

Linux(入门基础):90---进程的查看(ps、top、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查看整体的进程信息

Linux(入门基础):90---进程的查看(ps、top、pstree命令)

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

Linux(入门基础):90---进程的查看(ps、top、pstree命令)

  • 案例二:只查看一个进程的信息

Linux(入门基础):90---进程的查看(ps、top、pstree命令)

  • 案例三:改变一个进程的NI值
  • 第一步:查看当前的进程PID

Linux(入门基础):90---进程的查看(ps、top、pstree命令)

  • 第二步:查看此进程的信息

Linux(入门基础):90---进程的查看(ps、top、pstree命令)

  • 第三步:然后在top内输入r,输入之后出现这一行,让你输入进程的PID来修改哪个进程的NI值

Linux(入门基础):90---进程的查看(ps、top、pstree命令)

  • 第四步:我们输入3035,输入完之后回车

Linux(入门基础):90---进程的查看(ps、top、pstree命令)

  • 第五步:输入完之后,会让你输入NI值

Linux(入门基础):90---进程的查看(ps、top、pstree命令)

  • 第六步:我们输入10之后回车,可以看到NI改变了

Linux(入门基础):90---进程的查看(ps、top、pstree命令)

Linux(入门基础):90---进程的查看(ps、top、pstree命令)

三、以进程树的格式查看进程(pstree)

1.命令格式

  • pstree  [选项]

相关选项与参数

  • -A:各进程树之间以ASCII字符来连接
  • -U:各进程树之间以Unicode字符来连接
  • -p:同时列出进程的所属PID
  • -u:同时列出每个进程的所属账号

2.提示

  • pstree可以很好的显示进程之间的父子关系
  • 重点:centos中第一个进程是systemd,Ubuntu中第一个进程是init,这两个进程的PID都是1,因此系统会第一个调用这个进程,其他所有进程都是由这两个进程延伸出来的

3.演示案例

  • 案例一:以ASCII字符方式显示进程树

Linux(入门基础):90---进程的查看(ps、top、pstree命令)

  • 案例二:同时显示每个进程的PID和用户名
  • 括号内的为进程PID和该进程的用户名
  • 如果该进程的用户名与就是父进程的用户名相同就不会显示用户名,只显示出PID

Linux(入门基础):90---进程的查看(ps、top、pstree命令)

Linux(入门基础):90---进程的查看(ps、top、pstree命令)