Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1371318
  • 博文数量: 140
  • 博客积分: 8518
  • 博客等级: 中将
  • 技术积分: 1822
  • 用 户 组: 普通用户
  • 注册时间: 2005-03-01 22:23
个人简介

嘿嘿!

文章分类
文章存档

2016年(2)

2015年(5)

2014年(6)

2013年(11)

2012年(11)

2011年(3)

2010年(4)

2009年(4)

2008年(8)

2007年(23)

2006年(26)

2005年(37)

分类: LINUX

2012-08-27 16:11:07

有时候kill命令在*nix中似乎并不好使,在使用kill pid或者kill -9 pid之后,仍然有很多进程顽固的留存,并且显示为进程。这些进程就成为了僵尸进程,如果用top命令看一下,顶部就显示僵尸进程的数目了。defunct进程的产生有两种可能:一种是这个程序本身就有bug,另外就是用户执行了非正常操作。这两种可能造成了某个进程被打断与父进程或/和子进程的联系,这个进程就成了僵尸~

你的系统有没有这类进程呢?首先用来分析一下:
$ ps -A | grep defunct

假定显示出来这样的结果:
8328 ? 00:00:00 mono
25822 ? 00:00:00 ruby

即使你再次妄图使用kill命令杀之与无形之中,仍然发现它还顽强的活着。使用pstree命令查找mono和ruby的父进程,或者如下命令列出defunct进程的父进程:
$ ps -ef | grep defunct | more

假定结果如下,PPID就是父进程的pid号:

UID PID PPID …
—————————————————————

kenno 8328 6757 0 Mar22 ? 00:00:00 [mono]
kenno 18803 18320 0 Apr02 ? 00:00:00 [ruby]

接下来就可以使用kill -9 6757来杀掉父进程,然后通过ps -A | grep defunct验证一下效果。
阅读(12705) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~