ps wechselt zur gemeinsamen Anzeige von PID, PPID, PGID und SID

38

Ich habe ps mit verschiedenen Arten von Schaltern ausprobiert, z. B. -A, aux, ef usw. Es scheint jedoch nicht möglich zu sein, die richtige Schalterkombination zu finden, die mir die Prozess-ID (PID), die übergeordnete Prozess-ID (PPID) und die Prozessgruppe angibt ID (PGID) und die Sitzungs-ID (SID) eines Prozesses in derselben Ausgabe.

JohnMerlino
quelle
ps -o <field>,<field>,.... Die Manpage enthält die Details.
Mikel
@Mikel Ich habe gesehen, dass es in Ubuntu 12.04
JohnMerlino
1
Es sollte gut funktionieren. Wie läuft es? (Beachten Sie, dass -osteuert das Ausgabeformat, aber Sie könnten immer noch wollen -A, -e, -pusw. zu wählen , welche Prozesse zu zeigen.)
Mikel

Antworten:

65

Bitte schön:

$ 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

Wenn Sie auch den Namen des Prozesses sehen möchten, verwenden Sie Folgendes:

$ 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
terdon
quelle
Was machen "comm" und "head"?
JohnMerlino
3
@JohnMerlino "comm" gibt den Befehlsnamen aus und headist ein anderer Befehl, der nichts damit zu tun pshat. Er gibt nur die ersten N (standardmäßig 10) Zeilen aus. Ich habe ihn hier verwendet, um die Größe meiner Antwort zu begrenzen. Alles, was Sie über ps wissen müssen, wird in erklärt man ps.
Terdon
commdruckt nicht den vollständigen Befehl. Wenn Sie beispielsweise ausführen python foo.py, zeigt comm nur den pythonTeil an, aber nichtpython foo.py
32r34wgf3e
1
Ja, deshalb habe ich gesagt, dass es den Namen des Befehls ausgibt . Der Befehl ist python, das foo.pyist das Argument des Befehls. Versuchen Sie, cmdwenn Sie die Argumente auch wollen.
Terdon
13

Versuchen

ps -efj | less

Wenn Sie die PID / PGID / PPID / SID für einen bestimmten Prozessnamen oder eine bestimmte PID herausfinden möchten, versuchen Sie Folgendes:

ps -efj | grep ProcessName

ps -efj | grep PID

ODER versuchen Sie für eine besser formatierte Ausgabe Folgendes:

ps -ejf | egrep 'STIME|ProcessName'

ps -ejf | egrep 'STIME|pid'

Examples:

ps -ejf | egrep 'STIME|http'

ps -ejf | egrep 'STIME|1234'

PROBE:

[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
Angenommen, 1234 ist PID und Sie möchten die zugehörige PPID, PGID, SID und CMD kennen
Getestet unter CentOS / RedHat 6.x & 7.x
Raman Kathpalia
quelle