グループからプロセスのリストを表示するにはどうすればいいですか?

グループからプロセスのリストを表示するにはどうすればいいですか?

指定された 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 $ppidLinux では、これは機能しないため、他のソリューションを使用する必要があります。指定された親のすべての子プロセスをリストする which を使用できます。

関連情報