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.


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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.