Ich möchte einen einfachen Befehl, um alle Prozesse und ihre Informationen von einer bestimmten PGID aufzulisten.
Antwort1
Ich sehe keine Möglichkeit, proaktiv ps
die Auswahl basierend auf pgrp festzulegen. Sie müssen also diese Spalte anfordern und dann danach filtern. So etwas wie:
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"
Antwort2
pgrep -ag PGID
Wenn PGID
ist 0
, bedeutet dies die eigene Prozessgruppe von pgrep, z. B.
$ cat | cat | cat | pgrep -ag0
7301 cat
7302 cat
7303 cat
(Beachten Sie, dass pgrep
es sich niemals selbst in die Auflistung aufnimmt und pkill
sich niemals selbst beendet)
Antwort3
ps -g $pgid
Funktioniert bei Darwin wie gewünscht.
Unter Linux funktioniert dies nicht und Sie müssen eine andere Lösung verwenden. Sie können verwenden, ps --ppid $ppid
das alle untergeordneten Prozesse des angegebenen übergeordneten Prozesses auflistet.