Linux主机引起强悍的安全性和稳定而收到各方站长的喜爱,但是Linux有一定的局限性就是操作复杂,需要使用者掌握一定的基础只是,如果不懂得其中的运行原理,麻烦还是不少的,下面我们就僵尸进程这个问题来向大家简单介绍一下。

工具/原料

  • 本教程仅针对Linux主机,需在unix系统中操作

步骤/方法

  1. 1

    产生原因:
      在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他,那么他将变成一个僵尸进程。通过ps命令查看其带有defunct的标志。僵尸进程是一个早已死亡的进程,但在进程表(processs table)中仍占了一个位置(slot)。
      但是如果该进程的父进程已经先结束了,那么该进程就不会变成僵尸进程。因为每个进程结束的时候,系统都会扫描当前系统中所运行的所有进程,看看有没有哪个进程是刚刚结束的这个进程的子进程,如果是的话,就由Init进程来接管他,成为他的父进程,从而保证每个进程都会有一个父进程。而Init进程会自动wait其子进程,因此被Init接管的所有进程都不会变成僵尸进程。

  2. 2

    原理分析:
      每个Unix进程在进程表里都有一个进入点(entry),核心进程执 行该进程时使用到的一切信息都存储在进入点。当用 ps 命令察看系统中的进程信息时,看到的就是进程表中的相关数据。当以fork()系统调用建立一个新的进程后,核心进程就会在进程表中给这个新进程分配一个 进入点,然后将相关信息存储在该进入点所对应的进程表内。这些信息中有一项是其父进程的识别码。
      子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程到底什么时候结束。那么会不会因为父进程太忙来不及 wait 子进程,或者说不知道子进程什么时候结束,而丢失子进程结束时的状态信息呢?不会。因为UNIX提供了一种机制可以保证,只要父进程想知道子进程结束时的状态信息,就可以得到。这种机制就是:当子进程走完了自己的生命周期后,它会执行exit()系统调用,内核释放该进程所有的资源,包括打开的文件,占用的内存等。但是仍然为其保留一定的信息(包括进程号the process ID,退出码exit code,退出状态the terminationstatus of the process,运行时间the amount of CPU time taken by the process等),这些数据会一直保留到系统将它传递给它的父进程为止,直到父进程通过wait / waitpid来取时才释放。

  3. 3

    解决方法:
      (1) 父进程通过wait和waitpid等函数等待子进程结束,这会导致父进程挂起。
      执行wait()或waitpid()系统调用,则子进程在终止后会立即把它在进程表中的数据返回给父进程,此时系统会立即删除该进入点。在这种情形下就不会产生defunct进程。
      (2) 如果父进程很忙,那么可以用signal函数为SIGCHLD安装handler。在子进程结束后,父进程会收到该信号,可以在handler中调用wait回收。
      (3) 如果父进程不关心子进程什么时候结束,那么可以用signal(SIGCLD, SIG_IGN)或signal(SIGCHLD, SIG_IGN)通知内核,自己对子进程的结束不感兴趣,那么子进程结束后,内核会回收,并不再给父进程发送信号
      (4)fork两次,父进程fork一个子进程,然后继续工作,子进程fork一个孙进程后退出,那么孙进程被init接管,孙进程结束后,init会回收。不过子进程的回收还要自己做。

注意事项

  • 遇到此类问题不要慌,大胆心细,按步骤来就可以搞定

  • 如果你不懂的相关技术,建议找技术人员解决,否则会造成不必要的损失

    原文网址:http://jingyan.baidu.com/article/a378c960648664b3282830cd.html

    僵尸进程和孤儿进程:http://hi.baidu.com/zengzhaonong/item/95e225f99939906b3c14852d

转载于:https://www.cnblogs.com/heybob/p/4718975.html

【转】Linux的僵尸进程解决攻略相关推荐

  1. Linux的僵尸进程及其解决方法(转)

    Linux的僵尸进程及其解决方法 摘要: Linux的僵尸进程及其解决方法 1. 产生原因: 在UNIX 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他,那么他将 ...

  2. LINUX 下播放 DVD 全攻略 (关键字 DVD-ROM LiViD fifo OMS) (转)

    LINUX 下播放 DVD 全攻略 (关键字 DVD-ROM LiViD fifo OMS) (转)[@more@]Linux 下播放 dvd 全攻略 推荐:bfreeboy  发表日期:2001年5 ...

  3. LINUX 下播放 DVD 全攻略 (关键字 DVD-ROM LiViD fifo OMS)

    LINUX 下播放 DVD 全攻略 推荐:bfreeboy  发表日期:2001年5月23日  阅读次数:68 -------------------------------------------- ...

  4. win7下安装Linux实现双系统全攻略

    win7下安装Linux实现双系统全攻略 听语音 http://jingyan.baidu.com/article/c275f6bacc3326e33c756743.html 分区http://jin ...

  5. linux 识别僵尸进程,Linux上寻找并杀死僵尸进程

    转载: http://blog.csdn.net/shanzhizi/article/details/47320595 linux服务器上,多少会出现一些僵尸进程,下面介绍如何快速寻找和消灭这些僵尸进 ...

  6. Linux CentOS7配置ip地址攻略

    本文为joshua317原创文章,转载请注明:转载自joshua317博客 Linux CentOS7配置ip地址攻略 - joshua317的博客 一.背景 公司新来一台服务器,系统已经装好了,操作 ...

  7. Linux下Web服务器架设攻略

    Linux下Web服务器架设攻略 [收藏此页] [打印] [推荐] [挑错] 作者:小云  2004-12-23    内容导航: 概述 [IT168 专稿]今天我们来看看如何将Web服务器架在Lin ...

  8. linux服务配置大全 fedora 8 ftp 百度文库,Linux下VSFTP配置全攻略

    Linux下VSFTP配置全攻略 [日期:2007-10-05] 来源:Linux公社 作者:Linuxidc [字体:大 中 小] 4]如果要以系统中存在的普通用户登入FTP,也没有什么可以设置的, ...

  9. 侏罗纪世界手游显示无法登陆到服务器,《侏罗纪世界手游》不能玩 解决攻略...

    <侏罗纪世界手游>是一款由由ludia研发的恐龙时代为背景的模拟策略经营手游,很多玩家在兴冲冲地下载完游戏之后却发现不能玩,那么这到底是什么原因呢?下面小编就为大家带来解决攻略! 解决攻略 ...

最新文章

  1. JavaScript 基础,登录验证
  2. php artisan常用方法
  3. VB读取INI配置文件各方资料整合
  4. Nginx、LVS及HAProxy负载均衡软件的优缺点详解
  5. UILabel上展示不同颜色的文字(NSAttributedString)
  6. 板子制作_工厂制作风管VS现场制作有什么区别?
  7. JS 实现 jQuery的$(function(){});
  8. 简约好看的域名售卖页html源码
  9. 使用C#和MSMQ开发消息处理程序
  10. MySQL 备份 nb3 和 psc的区别
  11. 只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态。...
  12. [20180812]四校联考
  13. android小小的开发细节
  14. ASRT语音识别asrserver http协议测试专用客户端
  15. 职称计算机考试题库破解版2017,2017职称计算机考试题库及答案
  16. 线性代数基础知识点回顾与总结(一):行列式与矩阵
  17. 交流电路计算方法:复阻抗和相量法
  18. 信也科技2021年Q3财报:科技助力小微迸发新活力 践行ESG实现可持续发展
  19. filter_input
  20. 第五章:MySQL主从复制

热门文章

  1. openstack上创建vm实例后,状态为ERROR问题解决
  2. 为什么NaN - NaN == 0.0与英特尔C ++编译器?
  3. 如何从JavaScript对象中删除键? [重复]
  4. 如何回滚特定的迁移?
  5. 为什么null为对象,并且null和undefined有什么区别?
  6. springmvc个人小结
  7. Win10启动项设置在哪里
  8. win11小键盘怎么设置 Windows11小键盘的设置方法
  9. (转)MTK VC模拟器使用技巧
  10. 计算机四级网络工程题库,2015计算机四级网络工程师模拟题库(三)附答案