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.

  • 相关阅读:
    5.4.3 果园里的树
    5.3.2 字母重排
    5.3.1 6174问题
    Codeforces Round #253 (Div. 2), problem: (B)【字符串匹配】
    POJ1054 枚举【STL__binary_search()_的应用】
    432B
    0x3f3f3f3f...编程中无穷大常量的设置技巧
    2014年百度之星程序设计大赛 资格赛第一题 (longlong)
    Tarjan
    Dijkstra、Dij + heap、Floyd、SPFA、 SPFA + SLF Template
  • 原文地址:https://www.cnblogs.com/the-tops/p/7514171.html
Copyright © 2011-2022 走看看