Quero um comando simples para listar todos os processos e suas informações de um determinado PGID.
Responder1
Não vejo uma maneira de dizer proativamente ps
para selecionar com base no pgrp, então você precisa solicitar essa coluna e filtrá-la; algo como:
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"
Responder2
pgrep -ag PGID
Se PGID
for 0
, significa o próprio grupo de processos do pgrep, por exemplo.
$ cat | cat | cat | pgrep -ag0
7301 cat
7302 cat
7303 cat
(observe que pgrep
nunca se inclui na listagem e pkill
nunca se mata)
Responder3
Em Darwin, ps -g $pgid
funciona como você pede.
No Linux não funciona e você precisa usar alguma outra solução. Você pode usar ps --ppid $ppid
which lista todos os processos filhos de um determinado pai.