首页/系统/Linux 运维命令速查/pstree 进程树速览
进程与作业69 条

pstree 进程树速览

树形展示进程关系:-p 带 PID、-a 带参数、-u 标注用户变更;查「谁 fork 了谁」比 ps --forest 更聚焦。

Linux 运维命令速查系统更新于 2026-10-13

pstree 看进程关系

pstree 属于 psmisc,把系统里的进程按父子关系画成树形结构,一眼就能看出谁启动了谁。相比 ps aux 的平铺列表,它在回答「这个 worker 是谁的孩子」「某个守护进程 fork 出了多少子进程」这类问题时效率高得多。加上 -p 显示 PID、-a 显示参数、-u 标注用户切换、-s 显示祖先链,基本能覆盖日常排障需求。

基本信息

适用平台Linux(psmisc 包),macOS 可用 brew 安装
语法pstree [选项] [PID | 用户名]
常用选项-p 显示 PID、-a 显示命令行参数、-u 显示用户变化、-s 显示祖链
相关工具ps --forest、systemctl status 的 cgroup 树

典型使用场景

  • 确认某个服务进程的父进程是 systemd 还是被某个脚本拉起
  • 排查僵尸进程时先看它们的父进程是谁
  • 观察 nginx、php-fpm 之类的多进程模型有多少子进程
  • 查看指定用户的进程树,判断是否越权启动了进程
  • 找出 sudo 或 sshd 之下挂着的临时脚本进程

常用示例

常用示例
pstree -p | head -30            # 带 PID 看整体结构
pstree -p 1234                  # 以某个 PID 为根展开子树
pstree -asp 1234                # 含祖先链与完整命令行参数
pstree -u www-data              # 查看指定用户的进程树
pstree -c -p 1234               # 关闭同名合并,逐个列出每个 PID
pstree -T -p                    # 不显示线程,只看进程
pstree -h -p 1234               # 高亮当前进程及其祖先

选项逐项读法

选项作用使用注意
-p在每个节点后显示 PID不看 PID 时容易把同名进程混为一谈
-a显示完整命令行参数输出变长,宽终端或重定向到文件更合适
-c不合并同名进程默认把同名兄弟合成 3*[worker],要精确排查时加它
-s从根到目标显示祖链定位「谁拉起了它」的关键选项
-u标注用户切换sudo、su 场景能看出权限边界
-T隐藏线程线程很多时输出可读性差别很大
-n按 PID 排序对比两次快照更容易看出变化
默认输出会把同名的兄弟进程合并成类似 3*[worker] 的写法,看上去只有三个进程其实可能更多,需要逐个核对时加 -c。
pstree 展示的是某一瞬间的快照,短命进程很容易错过;要抓一闪而过的进程,用循环采集或专门的追踪工具。

易错点

  • 同名进程合并显示,误判进程数量导致排查方向错误,需要精确数量时加 -c
  • 命令行参数含特殊字符时会转义显示,要完整原始命令行还得用 ps -ww 或 /proc/PID/cmdline
  • 只在容器内运行看不到宿主机进程树,节点级排障要到宿主机或加特权视图
  • 把进程树当成 cgroup 结构看:容器场景的资源归属应查 systemd-cgtop 或 cgroup 目录

数据来源与参考

  • man 1 pstree(psmisc 手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌