ps 命令:按组 ID 列出进程

ps 命令:按组 ID 列出进程

这是当我使用 -g 选项列出所有进程时得到的结果:

ps -g -o pid,pgid,ppid
   PID   PGID   PPID
112140 112140 112139
127467 127467 127466
130547 130547 112140
130551 130547 130547
130557 130557 127467

...

ps -g 130547

不显示任何内容,而我期望 130547 和 130551。与“ps -s ”相同。为什么?有没有办法显示属于同一组(树)的进程?

答案1

在 Linux 上,ps -g通过以下方式选择进程团体或通过会议,但不是由进程组。如果参数仅由数字组成,则它会将参数视为会话 ID,否则将其视为组名称。

ps -g 130547列出会话中 ID 为 130547 的所有进程。推测进程 130547 不是会话领导者,因此不存在会话 ID 为 130547 的进程。

Linux ps 没有按进程组过滤的选项。您可以列出所有进程或给定会话中的所有进程,并按字段进行过滤pgid

ps -g $(ps -p 130547 -o sid=) -o pid,ppid,pgid
ps -e -o pid,ppid,pgid | awk 'NR == 1 || $3 == 130547'

相关内容