干掉僵尸进程

ε祈祈猫儿з 提交于 2019-12-29 18:27:30

最近,写了一个pcap方面的程序,程序启动的时候,有守护进程监控,会重启;

程序本身会多线程监控所有活动的网卡,同时用俩个线程,一个做超时检查,一个做连接状况显示;

今天在替换的时候,发现有僵尸进程这种情况出现,因为内部用了大量的sleep,可能你kill主线程的时候,子线程还在休眠,造成这种现象;

现在描述一下,怎么干掉僵尸进程,从而替换程序;

1,先替换执行程序,用mv,不能用cp,cp会提示说:      cp: cannot create regular file './dev_list_server': Text file busy

2,确定僵尸进程相关信息:    ps -e -o stat,ppid,pid,cmd | egrep '^[Zz]'      

3,可能需要用这个命令:  ps -ef | grep "defunct"

4,将所有显示出来的子进程kill掉;

5,这样,守护进程重启的时候,就会启动,你已经替换过的执行程序。

 

网上说,我这种情况是理想情况,描述如下:

  通过结束父进程从而结束僵尸进程,这只能算是一个比较理想的情况 ,很多时候遇到僵尸进程我们不能结束父进程,比如父进程是init进程,那一旦结束父进程,整个系统就挂掉了,这时候则可以考虑挂起子进程,这相当于“曲线救国”。一个进程一旦挂起就相当于“什么都不做了”。可以通过执行如下命令来挂起进程。

kill -HUP 进程pid         向指定ID进程,发送挂起情况;

描述记录end.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!