Wie finden Sie den übergeordneten Prozess eines Zombie-Prozesses?

47

Wie finden Sie den übergeordneten Prozess von Zombie-Prozessen?

Wenn der Kindprozess etwas ist, bei dem die Eltern nicht ganz offensichtlich sind ...

Gibt es eine Möglichkeit, Prozesse im Baumformat aufzulisten oder so?

Jack
quelle

Antworten:

61

Fügen Sie die lOption Ihrer ps-Befehlszeile hinzu. Dies ist die Option für lange Ausgaben. Die übergeordnete Prozess-ID ist eine der zusätzlichen Spalten mit der Bezeichnung PPID.

$ ps l
F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
0   508  3344  4498  18   0   2452  1236 wait   Ss   pts/12     0:00 /bin/sh
0   508  4467 17796  15   0   4664  1572 wait   Ss   pts/5      0:00 -/bin/bash
0   508  4498  4467  15   0  23032 15108 -      S+   pts/5      2:20 emacs -nw
0   508  4532 17796  15   0   4532  1464 wait   Ss   pts/13     0:00 -/bin/bash
0   508  4916 17796  15   0   4664  1648 wait   Ss   pts/7      0:01 -/bin/bash

Eine weitere Option ist der Befehl pstree , mit dem eine ASCII-Baumdarstellung der Prozesse angezeigt wird. Möglicherweise möchten Sie die -pOption zum Anzeigen von Prozess-IDs.

$ pstree -p dharris
screen(17796)─┬─bash(4467)───emacs(4498)───sh(3344)───sh(3345)
              ├─bash(4532)───su(31037)───bash(31041)
              ├─bash(4916)───pstree(26456)
              ├─bash(13547)───su(20442)───bash(20443)
              └─bash(17797)

sshd(25813)───bash(25817)───screen(25870)
Doug Harris
quelle
8
Hervorragende Antwort. Anstatt pstree -p harris, pstree -p $USERwürde die gleiche Bedeutung vermitteln und wörtlich arbeiten.
Phihag
12

FWIW verfügt psüber einen " Gesamtstruktur " -Modus, in dem mehrere Bäume angezeigt werden :

# ps --version
procps version 3.2.8

# ps f
  PID TTY      STAT   TIME COMMAND
 7889 pts/7    Ss     0:00 -bash
 7988 pts/7    R+     0:00  \_ ps f
 2447 pts/0    Ss+    0:00 -bash
 2532 pts/0    S      0:00  \_ /bin/bash /home/robmee01/sync.sh
 2548 pts/0    S      0:00  |   \_ ssh [email protected]
 2533 pts/0    S      0:00  \_ python /home/robmee01/IE2FF.py
 2534 pts/0    S      0:08  \_ x11vnc -usepw -forever
 2535 pts/0    S      2:47  \_ xosview
 2536 pts/0    Sl     0:17  \_ java -jar /work/timesheet/TimeSheet.jar
 2662 pts/0    Sl    18:53  \_ ./firefox-bin

Wenn das nicht der Prozess nicht angezeigt , die Sie suchen, versuchen Sie Ihren Benutzernamen spezifizieren explizit: ps f -U $USER; dies zeigt tendenziell mehr Vorgänge als üblich ps.

Persönlich verwende ich ps fo pid,cmdoder, um eine Gesamtstrukturansicht mit einer Auswahl von Spalten zu erhalten ( pid,cmdin diesem Fall). Sie können eine vollständige Liste der Spalten mit erhalten ps L.

RobM
quelle
Perfekt, die einzige Option, die wirklich funktioniert.
Felipe
1

htopist auch gut, besonders wenn man lauf einen Prozessnamen drückt , der alle offenen Dateien, Pipes und URLs für einen Prozess anzeigt (benötigt lsof)

ccpizza
quelle
htop kann auch in den Baummodus geschaltet werden.
Lanoxx
-1

Zuerst verwenden top, um pidden Zombie-Prozess herauszufinden . Dann renne ps -elfoder ps -effinde den ppiddes Zombies.

Rajesh Swain
quelle