Oba Zombie
a defunct
jsou stejné. ZOMBIE
je jedním z state of the process
zatímco neexistuje defunct
stavu, můžete to vidět ze zdrojového kódu jádra.
enum proc_state {
UNUSED, /*** processes in initial state **/
EMBRYO,
SLEEPING,
RUNNABLE,
RUNNING,
ZOMBIE /** processes in final state **/
};
Zombie stav znamená, kde opustil, ale ještě nebyl vyčištěn .
můžete otevřít manuálovou stránku proc(1)
a podívejte se na toto /proc/[pid]/stat
Stavové informace o procesu. Toto používá ps(1)
.
Pro Linux jsou procesy "zaniklé" a "zombie" stejné.
Od man ps
:
Procesy označené
<defunct>
jsou mrtvé procesy (tzv. „zombie“), které zůstávají, protože je jejich rodič řádně nezničil. Tyto procesy budou zničeny init(8), pokud nadřazený proces skončí.
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
Jak řekl Achal zaniklý přidal ps. Přísně vzato, nejsou totéž.
Například pouze tid 10941 byl v následující tabulce zombie. Ostatní vlákna byla ve stati D namísto Z.
$ grep prometheus foo/bar/sos_commands/process/ps_-elfL
4 Z root 10941 10920 10941 0 6 80 0 - 0 exit Mar14 ? 00:11:41 [prometheus] <defunct>
1 D root 10941 10920 11010 0 6 80 0 - 621811 wait_o Mar14 ? 00:11:08 [prometheus] <defunct>
1 D root 10941 10920 11025 0 6 80 0 - 621811 wait_o Mar14 ? 00:08:13 [prometheus] <defunct>
1 D root 10941 10920 11057 0 6 80 0 - 621811 wait_o Mar14 ? 00:11:12 [prometheus] <defunct>
1 D root 10941 10920 11060 0 6 80 0 - 621811 wait_o Mar14 ? 00:11:42 [prometheus] <defunct>
1 D root 10941 10920 11298 0 6 80 0 - 621811 wait_o Mar14 ? 00:11:05 [prometheus] <defunct>