什么是Defunct(失效)进程/ Zombie(僵尸)进程
要了解失效进程(有时称为僵尸进程)是什么,让我们看看进程是如何工作的。
我们将以Solaris 上的进程为例。
当程序在 shell 中运行时,shell 会启动一个新进程来执行工作。
一个失效的或者僵尸进程就是一个等待父进程清理它的进程信息块。
虽然失效进程不占用任何 CPU 时间、内存 或者 IO,但它确实消耗了进程信息块,这是一种有限的资源。
“zombie”名称来自应该是“Z”的状态条目。
由于进程基本上已经退出,有关程序名称的信息不再可用,因此使用“zombie”名称表示它已经死了。
以下是 ps 输出的示例输出,显示了内核进程表中的一个已失效进程:
# ps -ef | grep defunct root 12610 1 0 - ? 0:00 <defunct>
在 Solaris 9 及更高版本上终止失效进程
在 Solaris 9 及更高版本中, preap 命令可以终止失效的进程。
只有在管理员或者开发人员已确认父进程不会回收失效进程的情况下,才应使用 preap 命令。
否则,preap 可能会以不可预测的方式破坏父进程。
# preap 12610 12610: exited with status 0
on It Road.com
在 Solaris 8 及更低版本上杀死已失效的进程
在 Solaris 8 和更早版本的操作系统中,需要重新启动以清除失效和/或者僵尸进程。
日期:2020-09-17 00:15:11 来源:oir作者:oir