Подтвердить что ты не робот

Зомби против неработающих процессов?

Есть ли разница между зомби и несуществующими процессами? Я нашел статью в Википедии, где написано, что эти два являются одинаковыми. В этом случае для этого необходимо иметь два разных термина для одного процесса:

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

4b9b3361

Ответ 1

Для Linux "несуществующие" и "зомбические" процессы одинаковы.

От man ps:

Процессы, отмеченные <defunct>, являются мертвыми процессами (так называемыми "зомби" ), которые остаются, потому что их родитель не уничтожил их должным образом. Эти процессы будут уничтожены init (8), если родительский процесс завершает работу.

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

Ответ 2

Оба Zombie и defunct одинаковы. Zombie является одним из state of the process, в то время как нет состояния defunct, вы можете увидеть его из исходного кода ядра.

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

Состояние зомби означает, что оно вышло, но еще не очищено.

вы можете открыть man-страницу proc(1) и посмотреть эту /proc/[pid]/stat информацию о состоянии процесса. Это используется ps(1).

Ответ 3

Как сказал Ачал, несуществующее было добавлено пс. Строго говоря, это не одно и то же.

Например, только тид 10941 был зомби в следующей таблице. Другие темы были в статистике D вместо 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>