如何顯示群組中的進程清單?

如何顯示群組中的進程清單?

我想要一個簡單的命令來列出給定 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它列出給定父進程的所有子進程。

相關內容