解决僵尸进程

原创 2013年12月02日 14:29:35

这几天同事写的程序中出现了大量的僵尸进程,

帮忙分析了一下,问题出现在几个方面:

首先Top命令查看僵尸进程数目


查看所有的僵尸进程

ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]'


杀死所有僵尸进程

 ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9


在程序中几个注意的方面:

1.创建子进程后,父进程并未创建wait()或者waitpid()来回收子进程,结果子进程正常退出或者异常退出都会成为zombie进程,从而导致资源浪费,除非编写守护进程,在fork之后父进程便退出,此时无法调用wait()来获取子进程状态

2.在main中调用return,在其他地方调用exit()或者_exit()

3.管道通信要记得调用close()关闭由pipe打开的两个文件描述符。

4.父进程有多种方式来监护子进程,当一个获多个子进程状态发生变化时,需要重启这些子进程,在子进程中要把自己的id告诉父进程。



参考

Linux僵尸进程详细解析及ps常见用法
僵尸进程并不会佔用很多的资源。唯一的危害是影响了系统最大进程数。
如何查看僵尸进程?
ps auwx;发现僵尸进程的状态为Z。
ps axf;看进程数,以树的方式。
ps auwx | cut -c 10-15,45-50,63- | grep -i Z 查看僵尸进程pid、名称和进程路径。


Git使用
http://rogerdudler.github.io/git-guide/index.zh.html
http://my.eoe.cn/curious/archive/3563.html


git commit -m "create the code"
git push origin master



Linux的僵尸进程产生原因及解决方法

来源:http://www.blogdaren.com/post-882.html 1. 产生原因:     在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait ...
  • gb4215287
  • gb4215287
  • 2016年07月08日 00:02
  • 3029

僵尸进程是如何产生的?怎样避免僵尸进程的产生

僵尸进程的产生: 当一个进程创建了一个子进程时,他们的运行时异步的。即父进程无法预知子进程会在什么时候结束,那么如果父进程很繁忙来不及wait 子进程时,那么当子进程结束时,会不会丢失子进程的结束时...
  • gengybgengyb
  • gengybgengyb
  • 2015年11月07日 11:10
  • 1211

waitpid和SIGCHLD信号回收僵尸进程

对于多进程而言,父进程一般需要跟踪子进程的退出状态。因此当子进程结束运行时,内核不会立即释放该进程的进程表的表项。以满足父进程后续对子进程退出的信息查询(死后验尸),当然前提是父进程还在运行。在子进程...
  • huangshanchun
  • huangshanchun
  • 2015年08月09日 08:28
  • 1889

CentOS下如何查看并杀死僵尸进程及kill后出现问题的解决办法

原版来源:opsers.org 作者:羽飞博客 转载网址:http://www.centoscn.com/CentOS/Intermediate/2014/1107/4084.html 昨天服...
  • qq_35732963
  • qq_35732963
  • 2016年11月04日 12:47
  • 435

Linux僵尸进程的解决

Linux僵尸进程的解决
  • php521php
  • php521php
  • 2015年07月21日 22:12
  • 482

Linux解决僵尸进程

#include #include #include #include #include #include void printffun(signum) { printf("catc...
  • u011478295
  • u011478295
  • 2015年05月02日 15:51
  • 189

Linux的僵尸进程及其解决方法

Linux的僵尸进程及其解决方法 分类: linux2013-09-21 22:11 84人阅读 评论(0) 收藏 举报 linux僵尸进程 Linux的僵尸进程及其解决方法...
  • pi9nc
  • pi9nc
  • 2013年09月22日 09:09
  • 532

Linux的僵尸进程及其解决方法

Linux的僵尸进程及其解决方法 1. 产生原因:      在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他,那么他将变成一个...
  • kevinF_sun
  • kevinF_sun
  • 2011年09月07日 10:02
  • 1883

Linux的僵尸进程及其解决方法

1. 产生原因:      在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他,那么他将变成一个僵尸进程。通过ps命令查看其带有defunct的标志...
  • clzdl
  • clzdl
  • 2011年12月23日 15:54
  • 216

Linux的僵尸进程解决攻略

Linux主机引起强悍的安全性和稳定而收到各方站长的喜爱,但是Linux有一定的局限性就是操作复杂,需要使用者掌握一定的基础只是,如果不懂得其中的运行原理,麻烦还是不少的,下面我们就僵尸进程这个问题来...
  • freemindhack
  • freemindhack
  • 2014年07月25日 01:35
  • 270
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:解决僵尸进程
举报原因:
原因补充:

(最多只允许输入30个字)