要以树格式获取所有子进程,您可以运行以下命令
$ ps -g 24154 --forest
PID TTY TIME CMD
24154 pts/4 00:00:00 bash
25745 pts/4 00:00:00 \_ ps
我如何获得 PID 的以下 o/p?以下是ps -ef --forest | less
PID 24154 的部分操作。
root 1173 1 0 Sep07 ? 00:00:00 /usr/sbin/sshd -D
root 24141 1173 0 11:10 ? 00:00:00 \_ sshd: vishwa [priv]
vishwa 24149 24141 0 11:10 ? 00:00:00 | \_ sshd: vishwa@pts/4
vishwa 24154 24149 0 11:10 pts/4 00:00:00 | \_ -bash
vishwa 26004 24154 0 11:22 pts/4 00:00:00 | \_ ps -ef --forest
vishwa 26005 24154 0 11:22 pts/4 00:00:00 | \_ less
答案1
您可以通过运行以下命令获取从 init 进程开始的进程名称和 PID
$ pstree -ps $$
systemd(1)───sshd(1173)───sshd(42546)───sshd(42555)───bash(42560)───pstree(46455)
下面的命令有效,因为我没有在 bash 中运行任何子进程。如果 shell 内运行多个作业,您将看不到预期的结果
$ ps -ef --forest | grep -B3 $$
root 1173 1 0 Sep07 ? 00:00:00 /usr/sbin/sshd -D
root 42546 1173 0 20:44 ? 00:00:00 \_ sshd: vishwa [priv]
vishwa 42555 42546 0 20:44 ? 00:00:00 | \_ sshd: vishwa@pts/3
vishwa 42560 42555 0 20:44 pts/3 00:00:00 | \_ -bash
vishwa 46522 42560 0 21:13 pts/3 00:00:00 | \_ ps -ef --forest
vishwa 46523 42560 0 21:13 pts/3 00:00:00 | \_ grep --color=auto -B3 42560
$$
这里是当前shell的PID,键入echo $$
以输出PID。