我做了一个PHP脚本,它读取一些数据,并用pctnl_fork开始一个新的进程来处理数据。 当subprocess完成时,他们停留在进程中。 ps aux给我看像一个进程列表
demo 32229 0.0 0.0 0 0 pts/0 Z 12:23 0:00 [php] <defunct> demo 32251 0.0 0.0 0 0 pts/0 Z 11:50 0:00 [php] <defunct> demo 32284 0.0 0.0 0 0 pts/0 Z 11:50 0:00 [php] <defunct> demo 32298 0.0 0.0 0 0 pts/0 Z 12:56 0:00 [php] <defunct> demo 32303 0.0 0.0 0 0 pts/0 Z 11:50 0:00 [php] <defunct> demo 32316 0.0 0.0 0 0 pts/0 Z 12:23 0:00 [php] <defunct>
我可以安全地杀死这个进程,因为父进程还在创build新进程来做一些工作? 我知道我可能应该启动到stderr的命令pipe道(根据这个主题疯狂的crond行为。现在继续制作不活动的bash进程已经太晚了,父进程在后台运行。
在做了一些研究之后 ,看起来你必须杀死这些不存在的子进程的父进程才能消失。
链接中最引人瞩目的一句话是:“你不能杀死一个已经死亡的僵尸进程(又名僵尸)。”