특정 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
다윈에서는 ps -g $pgid
요청한 대로 작동합니다.
Linux에서는 작동하지 않으므로 다른 솔루션을 사용해야 합니다. 이를 사용하여 ps --ppid $ppid
특정 상위 프로세스의 모든 하위 프로세스를 나열할 수 있습니다.