指定された PGID からすべてのプロセスとその情報を一覧表示する簡単なコマンドが必要です。
答え1
pgrp に基づいて選択するように積極的に指示する方法が見つからないps
ため、その列を要求してフィルタリングする必要があります。次のようになります。
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
PGID
の場合0
、それは pgrep 自身のプロセス グループを意味します。例:
$ cat | cat | cat | pgrep -ag0
7301 cat
7302 cat
7303 cat
(pgrep
リストに自分自身が含まれることはなく、pkill
自分自身を殺すこともないことに注意してください)
答え3
Darwin では、ps -g $pgid
要求どおりに動作します。
ps --ppid $ppid
Linux では、これは機能しないため、他のソリューションを使用する必要があります。指定された親のすべての子プロセスをリストする which を使用できます。