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.