# 1.命令简介
pstree(process tree)显示进程树。
pstree 将所有进程以树状图显示,树状图将会以 pid (如果有指定) 或是以 init 这个基本进程为根 (root)。如果有指定使用者 id,则树状图只会显示该使用者所拥有的进程。
使用 ps 命令得到的数据精确,但数据庞大,这一点对掌握系统整体概况来说是不容易的。pstree 命令正好可以弥补这个缺憾。它能将当前的执行程序以树状结构显示。pstree命令支持指定特定程序(PID)或使用者(USER)作为显示的起始。
# 2.命令格式
pstree [OPTIONS] [PID | USER]
pstree -V | --version
# 3.选项说明
-a, --arguments
显示每个程序的完整指令,包含路径、参数或是常驻服务的标示。
-c, --compact-not
不使用精简标示法。
-G
使用 VT100 终端机的线条绘制字符。
-h, --highlight-all
列出树状图时,特别标明执行的程序。
-H, --highlight-pid <pid>
此参数的效果和指定"-h"参数类似,但特别标明指定的程序。
-l, --long
采用长列格式显示树状图。
-n, --numeric-sort
用程序识别码排序。预设是以程序名称来排序。
-p, --show-pids
显示进程 ID。PID 在每个进程名称后面的括号中显示为十进制数字。-p 将隐式禁用压缩。
-u, --uid-changes
显示 uid 转换。每当进程的 uid 与其父进程的 uid 不同时,新 uid 就会显示在进程名称后面的圆括号中。
-U, --unicode
使用 UTF-8 线条绘制字符。
-V, --version
显示版本信息。
# 4.常用示例
(1)以树状图显示进程。
pstree
systemd─┬─BT-Panel───{BT-Panel}
├─BT-Task─┬─python
│ └─11*[{BT-Task}]
├─YDLive─┬─YDService─┬─sh───8*[{sh}]
│ │ └─22*[{YDService}]
│ └─9*[{YDLive}]
├─abrt-dbus───3*[{abrt-dbus}]
├─acpid
├─2*[agetty]
├─atd
├─auditd───{auditd}
├─barad_agent─┬─barad_agent
│ └─barad_agent───2*[{barad_agent}]
├─crond
├─dbus-daemon
├─dhclient
├─iscsid
├─lsmd
├─lvmetad
├─ntpd
├─polkitd───6*[{polkitd}]
├─rsyslogd───2*[{rsyslogd}]
├─sgagent───{sgagent}
├─ss-server
├─sshd─┬─4*[sshd───sshd]
│ └─sshd─┬─bash───pstree
│ └─bash───man───less
├─systemd-journal
├─systemd-logind
├─systemd-udevd
├─tat_agent───7*[{tat_agent}]
└─tuned───4*[{tuned}]
(2)显示所有进程的所有详细信息。
pstree -a
systemd --switched-root --system --deserialize 22
├─BT-Panel /www/server/panel/BT-Panel
│ └─{BT-Panel}
├─BT-Task /www/server/panel/BT-Task
│ ├─(python)
│ └─11*[{BT-Task}]
├─YDLive
│ ├─YDService
│ │ ├─sh -c sleep 100
│ │ │ └─8*[{sh}]
│ │ └─22*[{YDService}]
│ └─9*[{YDLive}]
├─acpid
├─agetty --noclear tty1 linux
├─agetty --keep-baud 115200,38400,9600 ttyS0 vt220
├─atd -f
├─auditd
│ └─{auditd}
├─barad_agent
│ ├─barad_agent
│ └─barad_agent
│ └─2*[{barad_agent}]
├─crond -n
├─dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
├─dhclient -q -lf /var/lib/dhclient/dhclient--eth0.lease -pf /var/run/dhclient-eth0.pid -H VM-0-3-centos eth0
├─iscsid -f
├─lsmd -d
├─lvmetad -f
├─ntpd -u ntp:ntp -g
├─polkitd --no-debug
│ └─6*[{polkitd}]
├─rsyslogd -n
│ └─2*[{rsyslogd}]
├─sgagent -d
│ └─{sgagent}
├─ss-server -c /etc/shadowsocks-libev/config.json -u
├─sshd -D
│ ├─sshd
│ │ └─sshd
│ ├─sshd
│ │ └─sshd
│ └─sshd
│ ├─bash
│ │ └─pstree -a
│ └─bash
│ └─man pstree
│ └─less -s
├─systemd-journal
├─systemd-logind
├─systemd-udevd
├─tat_agent
│ └─7*[{tat_agent}]
└─tuned -Es /usr/sbin/tuned -l -P
└─4*[{tuned}]
(3) 显示当前所有进程的进程 ID。
pstree -p
systemd(1)─┬─ModemManager(676)─┬─{ModemManager}(716)
│ └─{ModemManager}(719)
├─NetworkManager(680)─┬─dhclient(9982)
│ ├─{NetworkManager}(745)
│ └─{NetworkManager}(749)
├─VGAuthService(681)
├─abrt-watch-log(671)
├─abrt-watch-log(672)
├─abrtd(632)
(4)显示指定进程号树状信息。
pstree 1451
sshd───sshd─┬─bash───pstree
└─bash───man───less
(5)显示进程树信息,结合管道。
pstree | less