僵尸进程问题排查
一个进程结束后,会返回一个返回值,父进程会用wait()来获取这个返回值,等获取到之后,系统会回收进程的pcd并删除对应的进程,但如果父进程一直不获取,那么这个进程会处于僵尸状态
处理思路:
僵尸进程是已经结束的进程,无法用kill杀死,首先得去看看他的父进程出了什么事情,为什么不获取
ps -p pid -o stat | tail -n 1
如果父进程停止了(T),那么恢复父进程就行
kill -SIGCONT pid
如果父进程正常,用strace -p pid去追踪他的行为,看看是不是发生了死锁之类的
如果是孤儿进程(父进程先一步退出了),那么这种进程一般会被初始进程接管,这种情况下要是还是出了问题,那看看是不是初始进程出事了,方法参上
注:高版本的初始进程不再会被kill发送的停止信号影响,也不能被strace