Linux 僵尸vs失效进程?

Linux 僵尸vs失效进程?,linux,process,zombie-process,Linux,Process,Zombie Process,僵尸进程和失效进程之间有区别吗?我在维基百科的文章中发现,这两个词是相同的。在这种情况下,为什么同一过程需要有两个不同的术语: 对于Linux,“失效”和“僵尸”进程是相同的 从man ps: 标记为的进程是死进程(所谓的“僵尸”),由于其父进程没有正确销毁它们而保留下来。如果父进程退出,这些进程将被init(8)销毁 Zombie和defount都是相同的ZOMBIE是进程的状态之一当没有失效状态时,您可以从内核源代码中看到它 enum proc_state { UNUSED, /

僵尸进程和失效进程之间有区别吗?我在维基百科的文章中发现,这两个词是相同的。在这种情况下,为什么同一过程需要有两个不同的术语:

对于Linux,“失效”和“僵尸”进程是相同的

man ps

标记为
的进程是死进程(所谓的“僵尸”),由于其父进程没有正确销毁它们而保留下来。如果父进程退出,这些进程将被init(8)销毁


Zombie
defount
都是相同的
ZOMBIE
是进程的
状态之一
当没有
失效
状态时,您可以从内核源代码中看到它

enum proc_state {
    UNUSED,   /*** processes in initial state **/
    EMBRYO, 
    SLEEPING,
    RUNNABLE, 
    RUNNING, 
    ZOMBIE   /** processes in final state **/
};
僵尸状态是指它已退出但尚未清理的状态


您可以打开
proc(1)
的手册页,并查看此
/proc/[pid]/stat
有关流程的状态信息。这是由
ps(1)

使用的,正如Achal所说的“失效”是由添加的。严格地说,它们不是一回事

例如,下表中只有tid 10941是僵尸。 其他线程在statd中,而不是在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>

$grep prometheus foo/bar/sos_命令/process/ps_-elfL
4 Z根10941 10920 10941 0 6 80 0-0退出Mar14?00:11:41[普罗米修斯]
1 D根10941 10920 11010 0 6 80 0-621811等等?00:11:08[普罗米修斯]
1 D根10941 10920 11025 0 6 80 0-621811等等?00:08:13[普罗米修斯]
1 D根10941 10920 11057 0 6 80 0-621811等等?00:11:12[普罗米修斯]
1 D根10941 10920 11060 0 6 80 0-621811等等?00:11:42[普罗米修斯]
1 D根10941 10920 11298 0 6 80 0-621811等等?00:11:05[普罗米修斯]

与计算机行业的其他行业相比,只有两个术语是相当不错的。数据库中的所有内容都有5个以上的名称,通常对不同部分重复使用相同的单词。说得好。非常感谢。那么Z和D的真正区别是什么呢?当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>