当前位置: 技术问答>linux和unix
关于子进程杀不死的情况
来源: 互联网 发布时间:2016-11-15
本文导语: 问题是这样的: 有父子进程:pid1, pid2 我一并kill了:#kill -9 pid2,pid1, 结果将父进程给KILL了,子进程过继给了INIT守护, 然后再去KILL子进程,结果KILL 不掉 对于这种现象,各位大大有没有相关的维护经验?请传授...
问题是这样的:
有父子进程:pid1, pid2
我一并kill了:#kill -9 pid2,pid1,
结果将父进程给KILL了,子进程过继给了INIT守护,
然后再去KILL子进程,结果KILL 不掉
对于这种现象,各位大大有没有相关的维护经验?请传授一把
有父子进程:pid1, pid2
我一并kill了:#kill -9 pid2,pid1,
结果将父进程给KILL了,子进程过继给了INIT守护,
然后再去KILL子进程,结果KILL 不掉
对于这种现象,各位大大有没有相关的维护经验?请传授一把
|
父进程死了子进程的父进程确实变为init进程
这个一直都是这样的
继续kill -9搞它
这个一直都是这样的
继续kill -9搞它
|
这个是所谓的zombie(僵尸进程)
在fork()/execve()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用waitpid()等待子进程结束,又没有显式忽略该信号,则子进程成为僵尸进程,无法正常结束,此时即使是root身份kill -9也不能杀死僵尸进程。补救办法是杀死僵尸进程的父进程(僵尸进程的父进程必然存在),僵尸进程成为"孤儿进程",过继给1号进程init,init始终会负责清理僵尸进程。
僵尸进程是指的父进程已经退出,而该进程dead之后没有进程接受,就成为僵尸进程.(zombie)进程
在fork()/execve()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用waitpid()等待子进程结束,又没有显式忽略该信号,则子进程成为僵尸进程,无法正常结束,此时即使是root身份kill -9也不能杀死僵尸进程。补救办法是杀死僵尸进程的父进程(僵尸进程的父进程必然存在),僵尸进程成为"孤儿进程",过继给1号进程init,init始终会负责清理僵尸进程。
僵尸进程是指的父进程已经退出,而该进程dead之后没有进程接受,就成为僵尸进程.(zombie)进程