每天学一个 Linux 命令(101):pstree

2021-04-21 11:28:09 浏览数 (1)

命令简介

pstree 命令以树状图的方式展现进程之间的派生关系。

代码语言:javascript复制
[root@centos7 ~]# pstree
-bash: pstree: command not found
[root@centos7 ~]# yum install psmisc -y

语法格式

代码语言:javascript复制
pstree [OPTIONS] 

选项说明

代码语言:javascript复制
-a  #显示每个程序的完整指令
-c  #不使用精简标示法
-G  #使用VT100终端机的列绘图字符
-h  #列出树状图时,特别标明现在执行的程序
-H<程序识别码>  #此参数的效果和指定"-h"参数类似
-l  #采用长列格式显示树状图
-n  #用程序识别码排序
-p  #显示程序识别码
-u  #显示用户名称
-U  #使用UTF-8列绘图字符
-V  #显示版本信息

应用举例

代码语言:javascript复制
[root@centos7 ~]# pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]
        ├─agetty
        ├─auditd───{auditd}
        ├─chronyd
        ├─crond
        ├─dbus-daemon
        ├─lvmetad
        ├─master─┬─pickup
        │        └─qmgr
        ├─polkitd───6*[{polkitd}]
        ├─rsyslogd───2*[{rsyslogd}]
        ├─sshd─┬─sshd───bash─┬─gzip
        │      │             ├─more
        │      │             └─pstree
        │      └─sshd───bash
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        └─tuned───4*[{tuned}]

显示系统当前所有进程的进程ID和进程号

代码语言:javascript复制
[root@centos7 ~]# pstree -p
systemd(1)─┬─NetworkManager(634)─┬─{NetworkManager}(656)
           │                     └─{NetworkManager}(658)
           ├─agetty(643)
           ├─auditd(600)───{auditd}(601)
           ├─chronyd(646)
           ├─crond(638)
           ├─dbus-daemon(626)
           ├─lvmetad(503)
           ├─master(972)─┬─pickup(5692)
           │             └─qmgr(974)
           ├─polkitd(623)─┬─{polkitd}(633)
           │              ├─{polkitd}(636)
           │              ├─{polkitd}(637)
           │              ├─{polkitd}(641)
           │              ├─{polkitd}(647)
           │              └─{polkitd}(651)
           ├─rsyslogd(870)─┬─{rsyslogd}(897)
           │               └─{rsyslogd}(898)
           ├─sshd(868)─┬─sshd(5304)───bash(5306)─┬─gzip(5328)
           │           │                         ├─more(5329)
           │           │                         └─pstree(6204)
           │           └─sshd(5546)───bash(5548)
           ├─systemd-journal(484)
           ├─systemd-logind(635)
           ├─systemd-udevd(509)
           └─tuned(872)─┬─{tuned}(1131)
                        ├─{tuned}(1132)
                        ├─{tuned}(1134)
                        └─{tuned}(1138)

显示所有进程的详细信息,相同的进程名可以压缩显示

代码语言:javascript复制
[root@centos7 ~]# pstree -a
systemd --switched-root --system --deserialize 22
  ├─NetworkManager --no-daemon
  │   └─2*[{NetworkManager}]
  ├─agetty --noclear tty1 linux
  ├─auditd
  │   └─{auditd}
  ├─chronyd
  ├─crond -n
  ├─dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
  ├─lvmetad -f
  ├─master -w
  │   ├─pickup -l -t unix -u
  │   └─qmgr -l -t unix -u
  ├─polkitd --no-debug
  │   └─6*[{polkitd}]
  ├─rsyslogd -n
  │   └─2*[{rsyslogd}]
  ├─sshd -D
  │   ├─sshd
  │   │   └─bash
  │   │       ├─gzip -cd mysql_backup.tar.gz
  │   │       ├─more
  │   │       └─pstree -a
  │   └─sshd
  │       └─bash
  ├─systemd-journal
  ├─systemd-logind
  ├─systemd-udevd
  └─tuned -Es /usr/sbin/tuned -l -P
      └─4*[{tuned}]

查看指定进程的PID

代码语言:javascript复制
[root@centos7 ~]# pstree -p | grep ssh
           |-sshd(868)- -sshd(5304)---bash(5306)- -grep(6325)
           |           `-sshd(5546)---bash(5548)
[root@centos7 ~]# pstree -p | grep system
systemd(1)- -NetworkManager(634)- -{NetworkManager}(656)
           |-systemd-journal(484)
           |-systemd-logind(635)
           |-systemd-udevd(509)

0 人点赞