pstree -p 是以树状结构直观显示进程父子关系并标注PID的命令,能天然表达派生链,如sshd(790)───bash(1245)───curl(1267),默认仅显示当前用户进程,查全系统需加sudo,指定进程名或PID可快速聚焦目标,-t参数可显示线程,但不显示跨namespace、未exec或僵死进程。

直接用 pstree -p 看最准,别先跑 ps
想一眼看清谁启动了谁,pstree -p 是唯一不需要手动比对、不跳层漏看的方案。它用缩进+连接符天然表达派生链,比如 sshd(790)───bash(1245)───curl(1267),说明 curl 是 bash 启动的,而 bash 又挂在 sshd 下。ps -ef 虽然也带 PPID 字段,但得自己找、自己连,容易把 PPID=1245 和 PID=1245 漏掉一行或看串行。
pstree 默认只显示当前用户进程,root 服务根本不会出现
你运行 pstree -p 却看不到 nginx 或 mysql?不是命令错了,是默认权限限制。它只展示你当前登录用户启动的进程树,systemd、sshd 的子进程、所有守护进程都不在其中。要查全系统,必须加 sudo:sudo pstree -p。注意:不加 sudo 时,哪怕你用 sudo systemctl start nginx 启动的服务,其 worker 进程也不会出现在无权限的 pstree 输出里。
聚焦某个进程,别从整棵树里肉眼扫
全系统树动辄上百行,靠眼睛找目标效率极低。直接指定目标缩小范围:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 查服务名(匹配
comm字段):pstree -p nginx—— 注意大小写,Nginx不匹配 - 查已知 PID 的后代:
pstree -p 1234—— 显示该进程及其所有子进程 - 反向追溯祖先链:
pstree -s 1234—— 输出形如systemd(1)───sshd(790)───bash(1234)
这些用法绕过全量扫描,3 秒内定位关键路径。
看到 {gdbus} 或 5*[nginx] 别当真
pstree 默认会合并同名进程并隐藏线程,造成误导:
- 带花括号的条目如
{gdbus}是线程,不是独立子进程;要显式显示线程,加-t参数 -
5*[nginx]表示 5 个同名进程,但不等于 5 个独立 fork 出来的 worker;可能是多线程模型,也可能由 master 进程fork()出来,需结合ps -eo pid,ppid,comm交叉验证 - 如果某进程在
pstree中“断链”(比如突然挂到systemd(1)下),大概率是父进程已退出、被 init 接管,此时应立刻补查ps -eo pid,ppid,comm,state看原始字段
真正容易被忽略的是:pstree 不显示跨 namespace、刚 fork 还没 exec、或已僵死的进程——这些情况都得切回 ps 才能确认。

















