如何显示组中的进程列表?

如何显示组中的进程列表?

我想要一个简单的命令来列出给定 PGID 的所有进程及其信息。

答案1

我没有找到一种方法来主动告知ps基于 pgrp 进行选择,因此您必须请求该列然后对其进行过滤;就像是:

ps axo pgrp,stat,euid,ruid,tty,tpgid,sess,ppid,pid,pcpu,comm | awk -v pgrp=3668 '$1 == pgrp'

ps -eo pgrp,pid,comm | sed -n -e 1p -e ' /3668/ p'

PGRP=3668; ps -eo pgrp,pid,comm | sed -n -e 1p -e " / $PGRP / p"

答案2

pgrep -ag PGID

如果PGID0,则表示 pgrep 自己的进程组,例如。

$ cat | cat | cat | pgrep -ag0
7301 cat
7302 cat
7303 cat

(请注意,它pgrep永远不会将自己包含在列表中,并且pkill永远不会杀死自己)

答案3

在达尔文上,ps -g $pgid确实按照你的要求工作。

在 Linux 上,它不起作用,您需要使用其他解决方案。您可以使用ps --ppid $ppid它列出给定父进程的所有子进程。

相关内容