Quiero un comando simple para enumerar todos los procesos y su información de un PGID determinado.
Respuesta1
No veo una manera de indicar proactivamente ps
que se seleccione según pgrp, por lo que debe solicitar esa columna y luego filtrarla; 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"
Respuesta2
pgrep -ag PGID
Si PGID
es así 0
, significa el propio grupo de procesos de pgrep, por ejemplo.
$ cat | cat | cat | pgrep -ag0
7301 cat
7302 cat
7303 cat
(tenga en cuenta que pgrep
nunca se incluye en el listado y pkill
nunca se elimina)
Respuesta3
En Darwin, ps -g $pgid
funciona como lo pides.
En Linux, no funciona y es necesario utilizar alguna otra solución. Puede utilizar ps --ppid $ppid
el cual enumera todos los procesos secundarios del padre determinado.