进程树 pstree
进程树 pstree
pstree
比ps
更直观!更好用!
Linux pstree 命令将所有行程以树状图显示,树状图将会以 pid (如果有指定) 或是以 init,systemd 这个基本行程为根 (root),如果有指定使用者 id,则树状图会只显示该使用者所拥有的行程。
跟 ps -ef f
类似,只不过,pstree
不是将所有的进程都显示出来,ps -ef f
是,因为-e
参数就是显示所有的进程
|
|
-
-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>