Linux的僵尸进程解决攻略

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

步骤/方法

  • 01

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

  • 02

    原理分析: 每个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来取时才释放。

  • 03

    解决方法: (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会回收。不过子进程的回收还要自己做。

(0)

相关推荐

  • 植物大战僵尸2升级攻略之不花钱通关全星攻略

    作为一款僵尸骨灰级的玩家,我自然也是不花一分钱就全星全地图通关了.现在教大家植物大战僵尸2通关攻略,让你不需要花费一分钱也能通关. 操作方法 01 通关顺序:金字塔〈西部〈海盗船 首先金字塔玩到20个 ...

  • 联想thinkpad电脑键盘问题汇总及解决攻略

    当我们办公的 时候有时电脑不知怎么回事总是会打出大写字母或打不出字,让我们的工作陷入停滞,到底是怎么回事,我们怎么解决呢? 1.问题描述及原因分析 01 可能由于我们不小心触碰到了[capsLock] ...

  • 《使命召唤7》五角大楼僵尸模式图文攻略(一)

    <使命召唤7:黑色行动>五角大楼僵尸模式图文攻略(一) 步骤/方法 01 这张地图比前一张要难,地图也更大,为了说明方便,我把地图分为3个区域:办公室.指挥中心.地下研究所 首先,这个地图 ...

  • 万智牌2014闪退解决攻略

    操作方法 01 万智牌2014现在已经登录了各大平台了,之前大肆的宣传已经把玩家们的心都提起来了吧!万智牌这款游戏在个大游戏平台都比较受欢迎,相信这款万智牌2014不会令大家失望了!昨日ios和安卓已 ...

  • 植物大战僵尸2钻石攻略

    植物大战僵尸2钻石攻略 植物大战僵尸2中玩家可以用钻石购买阳光.植物等许多特殊道具和功能,降低游戏难度.如何获得钻石一定是大家最为关心的问题,下面小编就给为大家带来拥有无限钻石的方法和植物大战僵尸通关 ...

  • 僵尸必须 死攻略

    僵尸必须死攻略,小编教你怎么玩,有兴趣的朋友可以来学习一下! 操作方法 01 开始是教学,,无难度 02 刚开始享受的是和僵尸肉搏的感觉,按Shift显示目标位置,到这里拿到任务,按E键 根据目标位置 ...

  • 植物大战僵尸迷你游戏“僵尸快跑”攻略

    <植物大战僵尸>(Plants vs. Zombies,简称PVZ)是由PopCap Games为Windows.Mac OS X及iPhone OS系统开发,并于2009年5月5日发售的 ...

  • 三国志乱舞闪退、不能更新解决攻略

    操作方法 01 三国志乱舞才开服不久,各位三国志乱舞玩家已经遇到了类似闪退.无法游戏以及不能更新等问题,在这里安趣小编向各位玩家推断一下这些问题出现的原因以及可能的解决方法,因为游戏是刚刚推出的所以小 ...

  • 植物大战僵尸2视频攻略

    植物大战僵尸刚出来的那段时间,真是风靡至极,不管男女老少都爱上这么个小游戏.如果植物大战僵尸2再度登场.在一个安静,闲适,和谐,古朴的小镇里,住着一位可爱动人的小loli,哦,是向日葵MM.这天,她手 ...