pstree命令

pstree查看进程树

  • pstree概述
  • pstree安装
  • pstree使用

pstree概述

pstree命令以树状图显示进程间的关系(display a tree of processes)。ps命令可以显示当前正在运行的那些进程的信息,但是对于它们之间的关系却显示得不够清晰。在Linux系统中,系统调用fork可以创建子进程,通过子shell也可以创建子进程,Linux系统中进程之间的关系天生就是一棵树,树的根就是进程PID为1的init进程。

pstree安装

[root@localhost ~]# yum -y install psmisc

pstree使用

  • 需要注意的是,在使用 pstree 命令时,如果不指定进程的 PID 号,也不指定用户名称,则会以 init 进程为根进程,显示系统中所有程序和进程的信息;反之,若指定 PID 号或用户名,则将以 PID 或指定命令为根进程,显示 PID 或用户对应的所有程序和进程。
  • init 进程是系统启动的第一个进程,进程的 PID 是 1,也是系统中所有进程的父进程。
参数
[root@localhost ~]# pstree [选项] [PID或用户名]
-a:显示启动每个进程对应的完整指令,包括启动进程的路径、参数等
-A: 各进程树之间的连接以ASCII码字符来连接
-c:不使用精简法显示进程信息,即显示的进程中包含子进程和父进程
-n:根据进程 PID 号来排序输出,默认是以程序名排序输出的
-U:各进程树之间的连接以utf8字符来连接,某些终端可能会有错误
-p:同时列出每个进程的PID
-u: 同时列出每个进程的所属账号名称:
-l:采用长列格式显示树状图
-h:列出树状图时,特别标明现在执行的程序
例1
[root@localhost ~]# bash 
[root@localhost ~]# pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]
        ├─VGAuthService
        ├─agetty
        ├─auditd───{auditd}
        ├─chronyd
        ├─crond
        ├─dbus-daemon
        ├─irqbalance
        ├─lvmetad
        ├─master─┬─pickup
        │        └─qmgr
        ├─polkitd───5*[{polkitd}]
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd───sshd───bash───bash───pstree		#第一个bash是父shell第二个是子shell
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tuned───4*[{tuned}]
        └─vmtoolsd───{vmtoolsd}
[root@localhost ~]# exit		#退出子shell
exit
例2
[root@localhost ~]# pstree -p		#全部显示pid
systemd(1)─┬─NetworkManager(667)─┬─{NetworkManager}(694)
           │                     └─{NetworkManager}(698)
           ├─VGAuthService(658)
           ├─agetty(683)
           ├─auditd(634)───{auditd}(635)
           ├─chronyd(684)
           ├─crond(674)
           ├─dbus-daemon(663)
           ├─irqbalance(662)
           ├─lvmetad(502)
           ├─master(1112)─┬─pickup(1114)
           │              └─qmgr(1116)
           ├─polkitd(660)─┬─{polkitd}(679)
           │              ├─{polkitd}(681)
           │              ├─{polkitd}(688)
           │              ├─{polkitd}(690)
           │              └─{polkitd}(702)
           ├─rsyslogd(657)─┬─{rsyslogd}(665)
           │               └─{rsyslogd}(666)
           ├─sshd(918)───sshd(1187)───bash(1189)───pstree(1233)
           ├─systemd-journal(479)
           ├─systemd-logind(659)
           ├─systemd-udevd(498)
           ├─tuned(919)─┬─{tuned}(1105)
           │            ├─{tuned}(1106)
           │            ├─{tuned}(1113)
           │            └─{tuned}(1118)
           └─vmtoolsd(661)───{vmtoolsd}(700)
[root@localhost ~]# pstree -p 1112		#-p加pid仅列出
master(1112)─┬─pickup(1114)
             └─qmgr(1116)

你可能感兴趣的:(shell,linux,服务器,centos)