¿Cómo mostrar una lista de procesos de un grupo?

¿Cómo mostrar una lista de procesos de un grupo?

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 psque 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 PGIDes 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 pgrepnunca se incluye en el listado y pkillnunca se elimina)

Respuesta3

En Darwin, ps -g $pgidfunciona como lo pides.

En Linux, no funciona y es necesario utilizar alguna otra solución. Puede utilizar ps --ppid $ppidel cual enumera todos los procesos secundarios del padre determinado.

información relacionada