pstree 命令不支持 -P 选项,正确显示 PID 应使用 -p(小写);可结合 -u、--highlight、grep 或 ps 命令辅助分析进程树及父子关系。

-P 这个选项,这是常见误解。Linux 中 pstree 不支持 -P 参数,该参数在部分旧文档或误传中出现,实际并不存在。要清晰显示进程 ID 并观察父子进程派生关系,正确做法是使用 pstree 的标准选项组合:
用 pstree -p 显示 PID
加上 -p(小写 p)即可在每个进程名后括号内显示其 PID:
pstree -p
输出示例:
systemd(1)─┬─NetworkManager(724)─┬─dhclient(856)
│ └─{NetworkManager}(749)
├─dbus-daemon(729)
└─sshd(790)───sshd(1234)───bash(1245)───pstree(1256)
这样一眼就能看出:bash(1245) 是 sshd(1234) 的子进程,而 pstree(1256) 又是 bash 的子进程。
配合用户名或指定进程查看关系
若想聚焦某个用户或进程,可加参数缩小范围:
-
pstree -p $USER:只显示当前用户的所有进程树及 PID -
pstree -p | grep -A2 -B2 "nginx":搜索含 nginx 的行,并显示上下文,快速定位其父/子进程 -
pstree -p 1:从 init/systemd(PID 1)开始完整展示全系统进程树
增强可读性:用颜色和缩进优化显示
默认 pstree 已用缩进体现层级,还可叠加以下选项提升辨识度:
-
pstree -p -u:在进程名后追加所属用户名(如nginx(1234,nginx)) -
pstree -p --highlight PID(需较新版本):高亮指定 PID 及其上下游路径 - 终端支持时,
pstree -p | less -R可分页查看带颜色的输出
替代方案:结合 ps 验证关键关系
当 pstree 层级过深或需确认 PPID(父进程 ID)时,可用 ps 辅助验证:
-
ps -o pid,ppid,comm -C bash:查所有 bash 进程的 PID、PPID 和命令名 -
ps -ef --forest | grep -A1 -B1 "your_process":用树形格式列出全量进程,更贴近 pstree 逻辑
PPID 列即为父进程 ID,对照 pstree 中的缩进位置,能交叉验证派生链是否准确。











