微信搜索superit|邀请体验:大数据, 数据管理、OLAP分析与可视化平台 | 赞助作者:赞助作者

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

linux aide_941 7℃

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

一、静态查看进程(ps)

  • 概念:ps命令可以查看当前系统中的进程
  • 格式:
ps [options]
  • 相关参数与选项:
    • -A:所有的进程都显示,与-e相同
    • -a:不显示与终端有关的线程
    • -u:有效使用者的相关线程
    • -y:不显示F列,以RSS列代替ADDR列。只能与-l一起使用
  • 输出格式相关选项:
    • l(小写的L):以BSD的风格显示
    • -l(小写的L):较长、较详细的将更多的信息显示出来。一般与-y一起使用。只是显示当前终端的信息
    • j:任务的格式
    • -f:做一个更为完整的输出
  • 常用使用场景:
    • ps  axjf  ==>以进程树的方式查看系统中所有的进程
    • ps  -lA  ==>查看系统所有的进程,格式与ps -l相同
    • ps  aux  ==>查看系统所有的进程

僵尸进程

  • 产生的原因:一般的原因是进程已经执行完毕,或者快要终止时,该进程的父进程缺无法完整地将该进程结束掉,造成该进程一直存在于内存中
  • 如何消除:一般系统不稳定时会造成僵尸进程,如果想要消除这个僵尸进程一般要先找到父进程,然后好好做个追踪以进行优化。如果僵尸进程已经无法管理了,通常需要交给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>

演示案例

  • 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 触发此进程的命令是什么

演示案例

  • 以ps -l的格式查看系统所有的进程:
ps -lA
  • 显示的内容是系统所有的进程,信息分栏的格式是与ps -l相同的

演示案例

  • 查看系统所有的进程:
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 触发该进程的命令

演示案例

  • 以进程树的方式显示进程:
ps  axjf
  •  进程树会显示进程之间的关系,不过也可以使用后面的pstree来查看

二、动态的查看进程(top)

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

1.命令格式

  • pstree  [选项]

相关选项与参数

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

2.提示

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

3.演示案例

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

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

四、pstack

  • pstack命令用来显示每个进程的调用栈。可以使用pstack来查看进程正在挂起的执行方法,也可以用来查看进程的本地线程堆栈,与JVM的jstack配合可以看到JVM线程运 行的全景
  • 安装如下:
sudo apt-get install pstack

  • 格式如下:
pstack pid [...]

演示案例

  • 查看25900进程的调用栈
pstack 25900

转载请注明:SuperIT » Linux(入门基础):90—进程的查看(ps、top、pstree、pstack命令)

喜欢 (0)or分享 (0)