这是当我使用 -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'