pstree -p 是精准资源回收的基础,可显示每个进程及其子进程的 pid,如 sshd(1422)───bash(1785);配合用户、pid 或 $$ 过滤,以及 -a、-n、-l 等参数可提升诊断效率。

直接用 pstree -p 就能显示每个进程的 PID,这是执行针对性资源回收(比如 kill 指定进程、排查僵尸进程、终止异常子树)最基础也最关键的一步。
显示 PID 是资源回收的前提
不带 -p 的 pstree 只显示进程名,无法准确定位目标。加上该参数后,每个进程名后紧跟括号内的数字就是它的 PID,例如 sshd(1422)───bash(1785) 表示 sshd 进程 PID 是 1422,其子 bash 进程 PID 是 1785。有了 PID,才能用 kill、kill -9 或 systemctl kill 等命令精准操作。
结合用户或进程范围缩小查看范围
系统进程多,全量树状图容易干扰判断。可配合用户名或 PID 过滤,让输出更聚焦:
-
只看某个用户的进程树和 PID:如查 user1 的所有进程,运行
pstree -p user1 -
从某个关键进程开始向下展开:比如发现 nginx 占用过高,先用
pgrep nginx得到主进程 PID(如 2100),再运行pstree -p 2100查看它的全部子进程及各自 PID -
高亮当前 shell 及其祖先进程:执行
pstree -hp $$($$是当前 shell 的 PID),方便快速识别自己正在操作的会话链路,避免误杀
搭配其他参数提升诊断效率
单纯显示 PID 不够,还需辅助信息支撑回收决策:
-
同时显示命令行参数:加
-a,如pstree -pa,可看到进程启动时的真实命令(含路径和参数),有助于区分多个同名进程(如不同目录下的 python 脚本) -
按 PID 数值排序:加
-n,如pstree -pn,让输出按 PID 从小到大排列,便于扫描低 PID 系统进程或定位刚启动的新进程 -
显示完整长行不截断:加
-l,防止长命令名被省略,避免因显示不全导致误判
实际回收操作中的典型流程
以终止某个异常 Java 应用及其全部子进程为例:
- 先运行
pstree -pau | grep java找出目标 java 进程及其 PID 和启动参数 - 确认无误后,用
pstree -ps 12345(12345 是目标 java 的 PID)查看它的父进程和完整子树结构 - 若需彻底清理整棵子树,可用
kill -TERM $(pstree -p 12345 | grep -o '([0-9]\+)' | tr -d '()')(提取所有 PID 并逐个发送终止信号) - 对僵死或无法响应的进程,再补
kill -9对应 PID











