进程树 pstree

目录
警告
本文最后更新于 2023-10-26,文中内容可能已过时。

进程树 pstree

pstree

ps更直观!更好用!

Linux pstree 命令将所有行程以树状图显示,树状图将会以 pid (如果有指定) 或是以 init,systemd 这个基本行程为根 (root),如果有指定使用者 id,则树状图会只显示该使用者所拥有的行程。

ps -ef f 类似,只不过,pstree不是将所有的进程都显示出来,ps -ef f是,因为-e参数就是显示所有的进程

1
pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user]
  • -a:显示该行程的完整指令及参数,如果是被内存置换出去的行程则会加上括号

    节点默认都是进程名称,

    带上-a参数会显示完整指令及参数

  • -c:如果有重覆的行程名,则分开列出(预设值是会在前面加上 n* 表示相同的命令有 n 条)

    默认情况下是折叠的

    可以看得很清楚,总共有四个 ssh 连接,在其中一个 ssh 连接中,我使用 bash 操作 Linux,在 bash 中,我运行了pstree,此外有两个节点因为完全一样,折叠起来了:2*[sshd───sshd───bash]

    使用-c参数会打开,一般不带,折叠起来简洁一些。

  • -u:显示命令的执行用户,好用

  • -h:列出树状图时,特别标明现在执行的程序;会加粗

  • -n:用进程 PID 排序。预设是以程序名称来排序;

  • -p:显示进程 PID; 好用

常用参数 -a -h -u -p

简单实践:

一般我们都是在top命令中查看到异常进程,然后在pstree中运行ps -aup <pid>

-u-p参数的 uid 和 pid 也是追加到命令名称后面的,会跟 -a 参数显示的信息混在一起,如果你不想他们混在一起,就分开查

pstree -ah

………

可以很明显地看出,所有进程的根进程都是 systemd,pid 为 1,因为它是由 Linux 内核主动调用的一个进程。而且 systemd 正在使用(字体加粗了)

pstree -hup

………

我们还可以指定 pid,只显示这一个分支

pstree -p <pid>

我们还可以指定 uid

pstree -u <user>

0%