仅显示进程子树

tyl*_*erl 5 linux command-line-interface

我想显示单个进程及其当前子进程的列表。因此,给定以下进程树:

想象一下以下流程清单:

  PID TTY      STAT   TIME COMMAND
    2 ?        S      0:00 [kthreadd]
    3 ?        S      0:06  \_ [ksoftirqd/0]  
  ...snip...
 1292 ?        Ss     0:06 /usr/sbin/gpm -m /dev/input/mice -t exps2
 1426 ?        Ss     0:00 /usr/lib/postfix/master
 9785 ?        S      0:00  \_ qmgr -l -t fifo -u
12301 ?        S      0:00  \_ pickup -l -t fifo -u -c
 1545 ?        Ss     0:05 /usr/sbin/apache2 -k start
 1570 ?        S      0:00  \_ /usr/sbin/apache2 -k start  
  ...snip...
Run Code Online (Sandbox Code Playgroud)

我只想显示进程 1426 及其子进程。像这样:

  PID TTY      STAT   TIME COMMAND
 1426 ?        Ss     0:00 /usr/lib/postfix/master
 9785 ?        S      0:00  \_ qmgr -l -t fifo -u
12301 ?        S      0:00  \_ pickup -l -t fifo -u -c
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以做到这一点?

use*_*517 8

您可以使用pstree来执行此操作并获得格式良好的输出

pstree -p 22221
mysqld_safe(22221)???logger(22334)
                   ??mysqld(22332)???{mysqld}(22335)
                                   ??{mysqld}(22336)
                                   ??{mysqld}(22337)
                                   ??{mysqld}(22338)
                                   ??{mysqld}(22340)
                                   ??{mysqld}(22341)
                                   ??{mysqld}(22342)
                                   ??{mysqld}(22343)
                                   ??{mysqld}(22346)
                                   ??{mysqld}(22394)
Run Code Online (Sandbox Code Playgroud)


qua*_*nta 7

$ ps -p 1426 --ppid 1426 --forest
Run Code Online (Sandbox Code Playgroud)

或者:

$ ps -eo pid,ppid,tty,stat,time,command --forest | awk '$1 == 1426 || $2 == 1426'
Run Code Online (Sandbox Code Playgroud)

显示详细信息命令。