每日一个Linux命令解析——pstree
pstree:pstree 是一个用于显示进程树的命令,它以树状结构展示系统中各进程的父子关系,非常适合用来观察进程的层次结构。
一、语法
pstree [选项] [PID或用户名]
二、选项
- 选项说明
- -a, --arguments:显示命令行参数。
- -A, --ascii:使用 ASCII 字符绘制线条。
- -c, --compact-not:不折叠相同的子树。
- -C, --color=TYPE:按属性对进程进行着色(如按进程“age”)。
- -g, --show-pgids:显示进程组 ID;隐含启用 -c。
- -G, --vt100:使用 VT100 字符绘制线条。
- -h, --highlight-all:高亮显示当前进程及其所有祖先进程。
- -H PID, --highlight-pid=PID:高亮显示指定 PID 的进程及其祖先进程。
- -l, --long:不截断过长的行。
- -n, --numeric-sort:按 PID 对输出排序。
- -N TYPE, --ns-sort=TYPE:按指定的命名空间类型排序输出:
(cgroup, ipc, mnt, net, pid, time, user, uts)。 - -p, --show-pids:显示进程 ID(PID);隐含启用 -c。
- -s, --show-parents:显示所选进程的父进程。
- -S, --ns-changes:显示命名空间的变化。
- -t, --thread-names:显示完整的线程名称。
- -T, --hide-threads:隐藏线程,仅显示进程。
- -u, --uid-changes:显示用户 ID(UID)的变化。
- -U, --unicode:使用 UTF-8(Unicode)字符绘制线条。
- -V, --version:显示版本信息。
- -Z, --security-context:显示安全属性。
- 参数
- PID:从指定 PID 的进程开始;默认为 1(即 init 进程)。
- USER:仅显示以指定用户进程为根的树。
三、示例
- 显示系统中所有进程的树状结构
pstree
输出:
systemd─┬─cron
├─sshd─┬─sshd───bash
│ └─sshd───bash
└─nginx───nginx
- 显示进程树并包含命令行参数
pstree -a
输出:
systemd─┬─cron
├─sshd -D
└─nginx -g daemon off;
- 显示进程树并附带每个进程的 PID
pstree -p
输出:
systemd(1)─┬─cron(1234)
├─sshd(5678)
└─nginx(9102)───nginx(9103)
- 高亮显示当前进程及其祖先进程
pstree -h #终端输出中,当前进程和其父进程会被高亮显示(通常以颜色或粗体区分)。
- 高亮显示指定进程(如 PID 为 5678 的进程)及其祖先进程
pstree -H 5678
输出:
systemd(1)─┬─cron(1234)
├─sshd(5678)───bash(9102)
└─nginx(9103)
- 仅显示特定用户的进程树
pstree user1
- 避免输出截断(显示完整行)
pstree -l
- 显示指定进程的父进程
pstree -s 5678
四、总结
实用场景
- 调试时,快速查看某进程的父子关系。
- 系统诊断中,了解资源消耗较大的进程及其子进程。
- 帮助排查进程异常情况,例如僵尸进程或孤儿进程。
pstree 通常属于 psmisc 软件包。如果未安装,可以用以下命令安装:
在基于 Debian/Ubuntu 的系统中:sudo apt install psmisc
在基于 Red Hat/CentOS/Anolis 的系统中:sudo yum install psmisc