当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 18 篇帖子 ]  前往页数 1, 2  下一页
作者 内容
1 楼 
 文章标题 : Zombie程序
帖子发表于 : 2007-08-01 11:04 
头像

注册: 2007-04-20 18:22
帖子: 92
地址: Matrix
送出感谢: 0 次
接收感谢: 0 次
今天top时有两个Zombie程序
kill不掉,是scim和netstat
我的scim还是能输入的
请高手指点一下


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2007-08-01 11:06 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
又见Zombie。。。我打仗的时候,经常看到自己的ping是这个哦。哎。

killall -9 scim-xxxxx


_________________
● 鸣学


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2007-08-01 11:28 
头像

注册: 2007-04-20 18:22
帖子: 92
地址: Matrix
送出感谢: 0 次
接收感谢: 0 次
eexpress 写道:
又见Zombie。。。我打仗的时候,经常看到自己的ping是这个哦。哎。

killall -9 scim-xxxxx


杀不掉的,statnet的PPID是swiftfox,重启后还是有
scim的PPID是X-session-manager也是重启后有
用什么好的办法吗?


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2007-08-01 12:27 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
不会吧。 -9都不行?????你sudo了????????


_________________
● 鸣学


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2007-08-01 12:42 
头像

注册: 2007-04-20 18:22
帖子: 92
地址: Matrix
送出感谢: 0 次
接收感谢: 0 次
eexpress 写道:
不会吧。 -9都不行?????你sudo了????????

sudo 了,切换到superuser都不行

root@ubuntu:/etc# ps aux |grep "defunct"
hitch 5888 0.0 0.0 0 0 ? Z 11:25 0:00 [scim] <defunct>
root 6355 0.0 0.0 2884 752 pts/1 R+ 12:43 0:00 grep defunct
root@ubuntu:/etc# killall -9 scim
root@ubuntu:/etc# ps aux |grep "defunct"
hitch 5888 0.0 0.0 0 0 ? Z 11:25 0:00 [scim] <defunct>
root 6373 0.0 0.0 2884 752 pts/1 R+ 12:43 0:00 grep defunct


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2007-08-01 13:06 
头像

注册: 2005-08-25 13:58
帖子: 808
地址: ustc
送出感谢: 0 次
接收感谢: 0 次
看看这两个zombie进程的父进程是哪个


_________________
爱喝真猪奶茶的夜鸣猪


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2007-08-01 13:16 
头像

注册: 2007-04-20 18:22
帖子: 92
地址: Matrix
送出感谢: 0 次
接收感谢: 0 次
nobrain 写道:
看看这两个zombie进程的父进程是哪个

是x-session-manag
我用killall -2 x-session-manag 重启后还是不行


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2007-08-01 19:51 
头像

注册: 2005-12-28 1:16
帖子: 3916
地址: 火星
系统: Ubuntu 12.10 X64
送出感谢: 1
接收感谢: 0 次
zomble进程是杀不掉的 唯一的办法就是重启

当子进程退出时 就会进入zomble状态 内核给子进程记录一些信息到一张表中
直到父进程调用wait系列系统调用去取回这些信息 子进程才能正常退出


_________________
目前负债150多万


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2007-08-01 19:59 
头像

注册: 2007-06-09 9:19
帖子: 953
地址: 上海
送出感谢: 1
接收感谢: 0 次
顽症


_________________
太阳好毒…….


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2007-08-01 20:15 
头像

注册: 2005-08-25 13:58
帖子: 808
地址: ustc
送出感谢: 0 次
接收感谢: 0 次
xhy 写道:
zomble进程是杀不掉的 唯一的办法就是重启

当子进程退出时 就会进入zomble状态 内核给子进程记录一些信息到一张表中
直到父进程调用wait系列系统调用去取回这些信息 子进程才能正常退出

或者把父进程咔嚓啦,由init进程wait


_________________
爱喝真猪奶茶的夜鸣猪


页首
 用户资料  
 
11 楼 
 文章标题 :
帖子发表于 : 2007-08-01 21:11 
头像

注册: 2005-12-28 1:16
帖子: 3916
地址: 火星
系统: Ubuntu 12.10 X64
送出感谢: 1
接收感谢: 0 次
nobrain 写道:
xhy 写道:
zomble进程是杀不掉的 唯一的办法就是重启

当子进程退出时 就会进入zomble状态 内核给子进程记录一些信息到一张表中
直到父进程调用wait系列系统调用去取回这些信息 子进程才能正常退出

或者把父进程咔嚓啦,由init进程wait



一个进程退出时,内核会逐个检查系统中的活动进程,把所有这个进程的子进程的ppid改为1
而zomble中的进程不是活动进程 因此不会被init领养

一般遇到zomble可以无视 因此zomble仅仅占用一个进程描述符 以及少量的终止信息
对系统的影响忽略不计

如果在服务器中有大量的zomble出现 可能会导致达到进程上限 无法创建新的进程

个人使用的话 10000个zomble都无所谓的


_________________
目前负债150多万


页首
 用户资料  
 
12 楼 
 文章标题 :
帖子发表于 : 2007-08-02 11:33 
头像

注册: 2005-08-25 13:58
帖子: 808
地址: ustc
送出感谢: 0 次
接收感谢: 0 次
xhy 写道:
一个进程退出时,内核会逐个检查系统中的活动进程,把所有这个进程的子进程的ppid改为1
而zomble中的进程不是活动进程 因此不会被init领养

在父进程退出的时候,zombie的子进程会被init领养的,写个程序就可以验证了。
代码:
$ uname -r
2.6.20-16-generic


代码:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main()
{
   switch(fork())
   {
      case -1:
         fprintf(stderr, "fork() failed\n");
         return EXIT_FAILURE;
         break;
      case 0: /* child process */
         printf("This is child pid = %ld\n",
               (long)getpid());
         switch(fork())
         {
            case -1:
               fprintf(stderr," fork failed\n");
               exit(EXIT_FAILURE);
               break;
            case 0:
               printf("grand process pid = %ld\n",
                     (long)getpid());
               sleep(4);
               exit(EXIT_SUCCESS);
               break;
            default:
               break;
         }
         exit(EXIT_SUCCESS);
         break;
      default:
         break;
   }
   sleep(10);
   exit(EXIT_SUCCESS);
}

运行这个程序,并观察系统监视器。
父进程创建了子进程,子进程处于zombie状态。子进程的子进程即孙进程在sleep了4秒之后,先于父进程退出,但是这个孙进程并没有处于zombie状态,而是消失了。此时,子进程仍然存在并处于zombie状态。似乎zombie进程的子进程也被init领养了。


_________________
爱喝真猪奶茶的夜鸣猪


页首
 用户资料  
 
13 楼 
 文章标题 :
帖子发表于 : 2007-08-02 12:26 
头像

注册: 2006-12-23 13:46
帖子: 9203
地址: Azores Islands
送出感谢: 0 次
接收感谢: 1
比较相信楼上


_________________
no security measure is worth anything if an attacker has physical access to the machine


页首
 用户资料  
 
14 楼 
 文章标题 :
帖子发表于 : 2007-08-02 13:36 
头像

注册: 2005-12-28 1:16
帖子: 3916
地址: 火星
系统: Ubuntu 12.10 X64
送出感谢: 1
接收感谢: 0 次
linux 2.6的内核 + 近期版本的init 下实验过
父进程正常退出的情况下 确实可以回收大部分defunct进程
solaris9,AIX下情况不同

更正一下我上面的说法
严格的说回收僵尸进程不是内核的职责
这个工作是init做的 init定期检查并且回收
linux(2.6)下是这样的
unix下有所不同

两次fork可以避免僵尸进程 因此不能作为实验例子
我用的是其它测试程序


_________________
目前负债150多万


页首
 用户资料  
 
15 楼 
 文章标题 :
帖子发表于 : 2007-08-02 13:38 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
父进程的缺陷,基本上可以无视


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 18 篇帖子 ]  前往页数 1, 2  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译