2017-12-26 22 views
10

Gibt es einen Unterschied zwischen Zombies und nicht mehr existierenden Prozessen? Ich habe den Wikipedia-Artikel gefunden, wo geschrieben steht, dass diese beiden gleich sind. In diesem Fall, warum es notwendig ist 2 verschiedene Begriffe für den gleichen Prozess zu haben:Zombie vs Defunct Prozesse?

https://en.wikipedia.org/wiki/Zombie_process

+0

Nur 2 Begriffe für etwas zu haben, ist ziemlich gut im Vergleich zum Rest des Computergeschäfts. Alles in einer Datenbank hat mehr als 5 Namen und verwendet oft dieselben Wörter für verschiedene Teile. https://askubuntu.com/questions/201303/what-is-a-defunct-process-and-why-doesnt-it-get-killed – chicks

Antwort

7

Für Linux „nicht mehr existierenden“ und „Zombie“ Prozesse sind die gleichen.

Von man ps:

Prozesse markiert <defunct> sind tot Prozesse (so genannte „Zombies“), die bleiben, weil ihre Eltern sie nicht richtig zerstört hat. Diese Prozesse werden von init (8) zerstört, wenn der Elternprozess beendet wird.

PROCESS STATE CODES 
    Here are the different values that the s, stat and state output specifiers (header "STAT" or "S") will display to describe the state of a process: 
    D uninterruptible sleep (usually IO) 
    R running or runnable (on run queue) 
    S interruptible sleep (waiting for an event to complete) 
    T stopped by job control signal 
    t stopped by debugger during the tracing 
    W paging (not valid since the 2.6.xx kernel) 
    X dead (should never be seen) 
    Z defunct ("zombie") process, terminated but not reaped by its parent 
0

Beide Zombie und defunct sind gleich. ZOMBIE ist der eine der state of the process, während es keinen defunct Zustand gibt, können Sie es aus Ihrem Kernel-Quellcode sehen.

enum proc_state { 
    UNUSED, /*** processes in initial state **/ 
    EMBRYO, 
    SLEEPING, 
    RUNNABLE, 
    RUNNING, 
    ZOMBIE /** processes in final state **/ 
}; 

Zombie Zustand bedeutet, wo es beendet hat, wurde aber noch nicht aufgeräumt.

können Sie die man-Seite von öffnen und sehen Sie diese /proc/[pid]/stat Statusinformationen über den Prozess. Dies wird von ps(1) verwendet.