ps passa alla visualizzazione collettiva di PID, PPID, PGID e SID


39

Ho provato ps con diversi tipi di switch, ad esempio -A, aux, ef e così via, ma non riesco a trovare la giusta combinazione di switch che mi dirà l'ID processo (PID), l'ID processo padre (PPID), il gruppo di processo ID (PGID) e ID sessione (SID) di un processo nello stesso output.


ps -o <field>,<field>,.... La pagina man ha i dettagli.
Mikel,

@Mikel Ho visto che già non funziona in Ubuntu 12.04
JohnMerlino

1
Dovrebbe funzionare bene. Come lo stai eseguendo? (Si noti che -oi controlli il formato di output, ma si potrebbe ancora voglia -A, -e, -p, ecc per selezionare quali processi mostrare.)
Mikel

Risposte:


66

Ecco qui:

$ ps  xao pid,ppid,pgid,sid | head
  PID  PPID  PGID   SID
    1     0     1     1
    2     0     0     0
    3     2     0     0
    6     2     0     0
    7     2     0     0
   21     2     0     0
   22     2     0     0
   23     2     0     0
   24     2     0     0

Se vuoi vedere anche il nome del processo, usa questo:

$ ps  xao pid,ppid,pgid,sid,comm | head
  PID  PPID  PGID   SID COMMAND
    1     0     1     1 init
    2     0     0     0 kthreadd
    3     2     0     0 ksoftirqd/0
    6     2     0     0 migration/0
    7     2     0     0 watchdog/0
   21     2     0     0 cpuset
   22     2     0     0 khelper
   23     2     0     0 kdevtmpfs
   24     2     0     0 netns

Cosa fanno "comm" e "head"?
John Merlino,

3
@JohnMerlino "comm" stampa il nome del comando ed headè un comando diverso, nulla a che fare con ps, stampa solo le prime N (10 di default) righe, l'ho usato qui per limitare la dimensione della mia risposta. Tutto ciò che devi sapere su ps è spiegato in man ps.
terdon

commnon stampa il comando completo. Ad esempio, se si esegue python foo.py, comm mostrerà solo la pythonparte, ma nonpython foo.py
32r34wgf3e

1
Sì, ecco perché ho detto che stampa il nome del comando . Il comando è python, foo.pyè l'argomento del comando. Prova cmdse vuoi anche gli argomenti.
terdon

13

Provare

ps -efj | less

In particolare, se si desidera scoprire PID / PGID / PPID / SID per un determinato ProcessName o PID, provare:

ps -efj | grep ProcessName

ps -efj | grep PID

O per un output meglio formattato, prova:

ps -ejf | egrep 'STIME|ProcessName'

ps -ejf | egrep 'STIME|pid'

Examples:

ps -ejf | egrep 'STIME|http'

ps -ejf | egrep 'STIME|1234'

CAMPIONE:

[ram@thinkred1cartoon ~]$ ps -ejf | egrep 'STIME|http'

UID        PID  PPID  PGID   SID  C STIME TTY          TIME CMD
root      1450     1  1450  1450  0 08:45 ?        00:00:04 /usr/sbin/httpd -DFOREGROUND
ram       3717     1  2589  2589  0 08:47 ?        00:00:00 /usr/libexec/gvfsd-http --spawner :1.3 /org/gtk/gvfs/exec_spaw/1
apache   11518  1450  1450  1450  0 09:40 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   11519  1450  1450  1450  0 09:40 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   11520  1450  1450  1450  0 09:40 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   11521  1450  1450  1450  0 09:40 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache   11522  1450  1450  1450  0 09:40 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
Supponendo che 1234 sia PID e che si desideri conoscere i relativi PPID, PGID, SID e CMD
Testato su CentOS / RedHat 6.xe 7.x
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.