“僵尸进程”和“死亡进程”之间有区别吗?我在维基百科文章中发现这两个术语是相同的。既然如此,为什么需要对同一进程使用两个不同的术语:
“僵尸进程”和“死亡进程”之间有区别吗?我在维基百科文章中发现这两个术语是相同的。既然如此,为什么需要对同一进程使用两个不同的术语:
对于Linux来说,“defunct”和“zombie”进程是一样的。
从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
$ 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>
进程状态代码
D:不可中断的睡眠(通常是 IO)
Z:僵尸进程,已终止但未被其父进程回收
- Robin HsuZombie
和defunct
是一样的。 ZOMBIE
是进程状态之一,而没有defunct
状态,您可以从内核源代码中看到。
enum proc_state {
UNUSED, /*** processes in initial state **/
EMBRYO,
SLEEPING,
RUNNABLE,
RUNNING,
ZOMBIE /** processes in final state **/
};
僵尸状态是指进程已经退出但是还没有被清理的状态。
您可以打开proc(1)
的手册,查看/ proc / [pid] / stat
有关该进程的状态信息。这被ps(1)
使用。