在本文中,我们将讨论在Linux系统中使用pstree命令,它与ps类似,但是它没有列出正在运行的进程,而是将它们显示在树中,树状格式是一种更方便的方式来显示流程层次结构,并使输出在视觉上更具吸引力。通常在Linux机器上工作时,有时你可能需要找出当前正在运行的进程,可以使用很多命令来查找有关正在运行的进程的信息,其中ps和top是最常用的命令(参考杀掉Linux中进程的使用示例:使用ps,kill,killall,pkill,top命令),不过本文为你介绍另一个命令,即pstree,以下为你讲解。
如何使用pstree命令
pstree命令的一般语法如下:
ps [OPTIONS] [USER or PID]
在没有任何选项或参数的情况下,pstree以最简单的形式显示所有正在运行的进程的分层树结构:
$ pstree
树中的top/root项目是所有系统进程的父进程,在此示例中,systemd是启动时启动的第一个进程。
pstree通过将相同的分支放在方括号之间并为它们加上代表分支数量的整数作为前缀来合并它们,这使输出更具可读性和视觉吸引力。
以下是显示如何使用方括号的示例:
├─2*[agetty]
与:
├─agetty
├─agetty
要禁用相同分支的合并,请使用-c选项:
$ pstree -c
进程的线程显示在父进程下,并使用花括号内的进程名称显示,这是一个例子:
├─lxcfs───2*[{lxcfs}]
使用-t选项显示完整的线程名称,如果要隐藏线程并仅显示进程,请使用-T选项。
通常,pstree会显示许多屏幕上无法显示的输出行,要一次查看输出一页,请将其通过管道传递给less命令:
$ pstree | less
如果给定用户名作为参数,则pstree仅显示该用户拥有的进程,例如,以下命令将仅显示由名为“ywnz”的用户启动的那些进程:
$ pstree ywnz
当将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:
缺省情况下,pstree通过名称对具有相同父项的进程进行排序,-n选项使pstree使用数字排序,即按PID排序:
$ pstree -pn
一个或多个进程组ID是进程组的第一个成员的进程ID,要查看PGID,请使用-g选项:
$ pstree -g
每个进程或线程之后的括号中也会显示PID:
显示PID或PGID时,将隐式禁用合并。
显示命令行参数
可以使用指定为命令行参数的配置选项来调用某些程序。
缺省情况下,pstree不会为你显示正在运行的进程的命令行参数,要查看该过程是如何开始的,请将该命令与-a选项一起使用:
$ pstree -a
突出显示
pstree还允许你突出显示流程以更好地呈现视觉效果。
-h选项指示pstree突出显示当前进程:
$ pstree -h
要突出显示特定进程,请使用-H选项,后跟进程ID:
$ pstree -H PID_NUMBER
如果不支持突出显示,该命令将退出并显示错误。
结论
pstree命令以树结构的形式显示正在运行的进程,有关所有可用pstree选项的信息,请在终端中输入man pstree命令查询。
相关主题