昨天修改以前写的脚本start_serv.sh,发现用crontab运行之,会出现defunct僵尸进程。原因是在这脚本中有nohup sh xxx.sh &。经过反复测试,发现只要把defunct僵尸进程干掉就可以了,并不影响xxx.sh的运行。现在把杀僵尸进程的方法记录备忘。

for i in `ps -ef |grep -v grep |grep defunct |grep start_serv |awk '{print $3}'`;do kill -15 $i;done


用到了kill命令的信号15来杀父进程,深层次的我研究不了了,脑子不够用。如果15信号不行,我见有其他文章写了18信号,由于15相对比较友好,并且对于我目前的情况是可行的,暂不考虑用18信号。如果有复杂的情况,可参考郭耀今的《CentOS下杀僵尸进程办法》