Jak znaleźć proces macierzysty procesu zombie?

47

Jak znaleźć proces macierzysty procesów zombie?

Gdy proces potomny jest czymś, co rodzic nie jest całkowicie oczywiste ...

Czy istnieje jakiś sposób, aby wyświetlić listę procesów w formacie drzewa lub coś takiego?

Jacek
źródło

Odpowiedzi:

61

Dodaj lopcję do wiersza polecenia ps. Jest to opcja długiej wydajności. Identyfikator procesu nadrzędnego jest jedną z dodatkowych kolumn - oznaczoną 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

Inną opcją jest polecenie pstree, które pokazuje reprezentację procesów w drzewku ascii. Prawdopodobnie będziesz potrzebować -popcji wyświetlania identyfikatorów procesów.

$ 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
źródło
8
Doskonała odpowiedź. Zamiast pstree -p harris, pstree -p $USERby przekazać to samo znaczenie, a verbatim praca.
phihag
12

FWIW, psma tryb „leśny”, który pokazuje wiele drzew:

# 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

Jeśli to nie wyświetla proces, którego szukasz, spróbuj podając swoją nazwę użytkownika wyraźnie: ps f -U $USER; zwykle pokazuje więcej procesów niż zwykły ps.

Osobiście używam ps fo pid,cmdlub, aby uzyskać widok lasu z wybranym wyborem kolumn ( pid,cmdw tym przypadku). Możesz uzyskać pełną listę kolumn za pomocą ps L.

RobM
źródło
Idealne, jedyna opcja, która naprawdę działa.
Felipe
1

htopjest również dobry, szczególnie po naciśnięciu lnazwy procesu, który pokaże wszystkie otwarte pliki, potoki i adresy URL dla procesu (wymaga lsof)

ccpizza
źródło
htop można również przełączyć w tryb drzewa.
lanoxx
-1

Najpierw użyj, topaby dowiedzieć się pido procesie zombie. Następnie uruchom ps -elflub, ps -efaby znaleźć ppidzombie.

Rajesh Swain
źródło