Linux 中的 pstree 命令
在 Linux 系统上工作时,有时您可能需要找出当前正在运行的进程。您可以使用许多命令来查找有关正在运行的进程的信息, ps
并且 top
这些命令是最常用的命令。
在本文中,我们将讨论 pstree
命令。它与相似 ps
,但是没有列出正在运行的进程,而是以树形显示它们。树状格式是一种更方便的方式来显示流程层次结构,并使输出在视觉上更具吸引力。
如何使用 pstree
命令
该 pstree
命令的常规语法如下:
ps [OPTIONS] [USER or PID]
在没有任何选项或参数的情况下以最简单的形式 pstree
显示所有正在运行的进程的层次树结构:
pstree
systemd─┬─VBoxService───7*[{VBoxService}]
├─accounts-daemon───2*[{accounts-daemon}]
├─2*[agetty]
├─atd
├─cron
├─dbus-daemon
├─irqbalance───{irqbalance}
├─2*[iscsid]
├─lvmetad
├─lxcfs───2*[{lxcfs}]
├─networkd-dispat───{networkd-dispat}
├─nginx───2*[nginx]
...
树中的 top/root 项目是所有系统进程的父进程。在此示例中,即 systemd
是启动时启动的第一个进程。
pstree
合并相同的分支,方法是将它们放在方括号之间,并在它们前面加上表示分支数量的整数。这使输出更具可读性和视觉吸引力。
以下是显示如何使用方括号的示例:
├─2*[agetty]
与:
├─agetty
├─agetty
要禁用相同分支的合并,请使用以下 -c
选项:
pstree -c
进程的线程显示在父进程下,并使用花括号内的进程名称显示。这是一个例子:
├─lxcfs───2*[{lxcfs}]
使用 -t
选项显示完整的线程名称。如果要隐藏线程并仅显示进程,请使用该 -T
选项。
通常, pstree
显示许多屏幕上不适合的输出行。要一次查看一页输出,请将其通过管道传递给以下 less
命令:
pstree | less
如果使用用户名作为参数,则 pstree
仅显示该用户拥有的进程。例如,以下命令将仅显示由名为 “buzheng 的用户启动的那些进程:
pstree buzheng
当将 PID 指定为参数时, pstree
显示以给定进程作为树根的树。这是一个例子:
pstree 1943
sshd───bash───pstree
要显示给定进程的父流程,请使用 -s
选项,后跟流程 PID :
pstree -s 1943
systemd───sshd───sshd───bash───pstree
显示 PID 和 PGID
通常,在运行 pstree
命令时,用户正在寻找的最重要的信息是进程 ID 。例如,知道 PID 可以让您杀死一个故障进程。
-p
选项指示 pstree
显示 PID :
pstree -p
每个进程或线程后的括号中都显示 PID 。
systemd(1)─┬─VBoxService(955)─┬─{VBoxService}(956)
│ ├─{VBoxService}(957)
│ ├─{VBoxService}(958)
│ ├─{VBoxService}(959)
│ ├─{VBoxService}(960)
│ ├─{VBoxService}(961)
│ └─{VBoxService}(962)
...
默认情况下, pstree
按名称对具有相同父项的进程进行排序。该 -n
选项告诉 pstree
使用数字排序,即按 PID 排序:
pstree -pn
一个或多个进程组 ID 是进程组的第一个成员的进程 ID 。要查看 PGID ,请使用以下 -g
选项:
pstree -g
每个进程或线程之后的括号中也会显示 PID 。
systemd(1)─┬─VBoxService(954)─┬─{VBoxService}(954)
│ ├─{VBoxService}(954)
│ ├─{VBoxService}(954)
│ ├─{VBoxService}(954)
│ ├─{VBoxService}(954)
│ ├─{VBoxService}(954)
│ └─{VBoxService}(954)
...
显示 PID 或 PGID 时,将隐式禁用合并。
显示命令行参数
一些程序在被调用启动的时候会带上命令行参数作为配置选项使用。
默认情况下, pstree
不会为您显示正在运行的进程的命令行参数。要查看该进程是如何开始的,请使用 -a
选项:
pstree -a
...
├─agetty -o -p -- \\u --keep-baud 115200,38400,9600 ttyS0 vt220
├─agetty -o -p -- \\u --noclear tty1 linux
...
突出显示
pstree
还可以让您突出显示流程以更好地呈现视觉效果。
该 -h
选项指示 pstree
突出显示当前进程及其所有祖先。
pstree -h
要突出显示特定进程,请使用 -H
选项,后跟进程 ID :
pstree -H PID_NUMBER
如果不支持突出显示,该命令将退出并显示错误。
结论
pstree
命令以树结构形式显示正在运行的进程。
有关所有可用 pstree
选项的信息,请在终端中输入 man pstree
查看。