使用 ps 命令显示进程树,主要有以下几种方法。

方法一:使用 --forest 选项 (最推荐)

这是最直观、可读性最强的方法。--forest 选项会强制 ps 以 ASCII 字符画出树状结构,清晰地展示进程间的父子关系。

常用命令:

ps -ef --forest
  • -e:显示所有进程。
  • -f:显示完整格式的进程信息。

其他变体:

  • 显示更详细的信息(如CPU、内存占用):
    ps aux --forest
    
    • a:显示所有终端的进程。
    • u:以用户为主的格式输出。
    • x:显示没有控制终端的进程。
  • 只查看特定进程(如 systemd)的树状结构:
    ps -ef --forest | grep systemd
    

方法二:使用 -H 选项

-H 选项可以显示进程的层次结构,效果类似于树状图,但通常不如 --forest 直观。

ps -efH

方法三:使用 BSD 风格的 axjf 选项

这是另一种常见的显示进程树的方式,结合了 BSD 和 Unix 风格的选项。

ps axjf
  • a:显示所有终端的进程。
  • x:显示没有控制终端的进程。
  • j:以“作业格式”输出,包含进程组ID等信息。
  • f:显示进程间的层级关系。

方法四:自定义显示格式

如果你需要更精确地控制输出内容,可以使用 -o 选项自定义显示字段,并结合 --forest 选项。

ps -eo pid,ppid,cmd --forest
  • -e:显示所有进程。
  • -o:自定义输出格式。
  • pid,ppid,cmd:指定只显示进程ID、父进程ID和命令名。

补充:pstree 命令

除了 ps,Linux 系统还有一个专门用于显示进程树的命令 pstree,它输出的树状结构更加纯粹和美观。

pstree
  • 显示进程 ID:
    pstree -p
    
  • 显示特定用户(如 root)的进程树:
    pstree root
    

总结:日常使用中,ps -ef --forest 是最佳选择,兼顾了信息完整性和可读性。如果只关心进程树的结构,pstree 命令则更为简洁。