zoukankan      html  css  js  c++  java
  • 干掉僵尸进程

    最近,写了一个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.

  • 相关阅读:
    ffmpeg常用命令集合
    Django传文件(FILES用法)
    Flask传文件(files用法)
    docker 部署redis服务
    tomcat启动报错ContainerBase.addChild: start
    Echarts折线图 y轴刻度数值与实际值不符解决方法
    春招日记
    Leetcode5700. 使所有区间的异或结果为零(DP)
    VS2015拖动调整代码窗口奔溃
    图床搭建
  • 原文地址:https://www.cnblogs.com/the-tops/p/7514171.html
Copyright © 2011-2022 走看看