Есть ли разница между зомби и несуществующими процессами? Я нашел статью в Википедии, где написано, что эти два являются одинаковыми. В этом случае для этого необходимо иметь два разных термина для одного процесса:
Зомби против неработающих процессов?
Ответ 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>