玩机手册

您现在的位置是:玩机手册 > linux教程

linux教程

Linux中的僵尸进程如何产生的?僵尸进程怎么杀?

2020-11-03linux教程
Linux僵尸进程怎么杀?在Linux中有一些有些程序即使执行完了任务,还是会留在进程中,此为僵尸进程,TA们留下没有任何作用,还会持续消耗硬件资源,虽然该进程是无害的,但一直存储在内存中的也是一个问题。

  Linux僵尸进程怎么杀?在Linux中有一些有些程序即使执行完了任务,还是会留在进程中,此为僵尸进程,TA们留下没有任何作用,还会持续消耗硬件资源,虽然该进程是无害的,但一直存储在内存中的也是一个问题。

Linux中的僵尸进程如何产生的?僵尸进程怎么杀?

  什么是僵尸进程?

  我们都知道进程的工作原理。我们启动一个程序,开始我们的任务,然后等任务结束了,我们就停止这个进程。 进程停止后, 该进程就会从进程表中移除。

  你可以通过 System-Monitor 查看当前进程。

Linux中的僵尸进程如何产生的?僵尸进程怎么杀?

  但是,有时候有些程序即使执行完了也依然留在进程表中。

  那么,这些完成了生命周期但却依然留在进程表中的进程,我们称之为 “僵尸进程”。

  僵尸进程如何产生的?

  当你运行一个程序时,它会产生一个父进程以及很多子进程。 所有这些子进程都会消耗内核分配给它们的内存和 CPU 资源。

  这些子进程完成执行后会发送一个 Exit 信号然后死掉。这个 Exit 信号需要被父进程所读取。父进程需要随后调用 wait 命令来读取子进程的退出状态,并将子进程从进程表中移除。

  若父进程正确第读取了子进程的 Exit 信号,则子进程会从进程表中删掉。

  但若父进程未能读取到子进程的 Exit 信号,则这个子进程虽然完成执行处于死亡的状态,但也不会从进程表中删掉。

  僵尸进程对系统有害吗?

  不会。由于僵尸进程并不做任何事情, 不会使用任何资源也不会影响其它进程, 因此存在僵尸进程也没什么坏处。 不过由于进程表中的退出状态以及其它一些进程信息也是存储在内存中的,因此存在太多僵尸进程有时也会是一些问题。

  你可以想象成这样:

  “你是一家建筑公司的老板。你每天根据工人们的工作量来支付工资。 有一个工人每天来到施工现场,就坐在那里, 你不用付钱, 他也不做任何工作。 他只是每天都来然后呆坐在那,仅此而已!”

  这个工人就是僵尸进程的一个活生生的例子。但是, 如果你有很多僵尸工人, 你的建设工地就会很拥堵从而让那些正常的工人难以工作。

  那么如何找出僵尸进程呢?

  打开终端并输入下面命令:

  1. 01ps aux | grep Z
复制代码ps aux | grep Z

  会列出进程表中所有僵尸进程的详细内容。

  僵尸进程怎么杀?

  正常情况下我们可以用 SIGKILL 信号来杀死进程,但是僵尸进程已经死了, 你不能杀死已经死掉的东西。 因此你需要输入的命令应该是

  1. 01kill -s SIGCHLD pid
复制代码kill -s SIGCHLD pid

  将这里的 pid 替换成父进程的进程 id,这样父进程就会删除所有以及完成并死掉的子进程了。

  你可以把它想象成:

  “你在道路中间发现一辆废弃的汽车,于是你联系了拖车,之后拖车就会将这辆废弃的汽车带离道路。”

  以上内容便是关于僵尸进程的一些描述和结束,如果程序本身编写的不是很好,是无法删掉这些子进程的(否则你一开始也见不到这些僵尸了)。 因此想要快速删除子进程,只有结束TA们的父进程即可。

其他相关

僵尸进程如何产生的_deeplearnings的博客-CSDN博客

2017年8月18日 Linux 系统中僵尸进程和现实中僵尸(虽然我也没见过)类似,虽然已经死了,但是由于没人给它们收尸,还能四处走动。僵尸进程指的是那些虽然已经终止的进程,但仍然保留...

Linux中的僵尸进程如何产生的?僵尸进程怎么杀?-系统之家

2018年2月6日 Linux僵尸进程怎么杀?在Linux中有一些有些程序即使执行完了任务,还是会留在进程中,此为僵尸进程,TA们留下没有任何作用,还会持续消耗硬件资源,虽然该进程是无害的...

僵尸进程以及如何处理僵尸进程_喜欢恋着风-CSDN博客

2017年7月31日 在UNIX系统中,一个进程结束了,但是其父进程没有等待(调用wait/waitpid)它,那么它将变成一个僵尸进程。通过PS命令可以查看其带有defunct的标志,僵尸进...

僵尸进程怎么杀 - 百度经验

2017年7月31日 僵尸进程怎么杀,僵尸进程的查杀方法一般可以通过kill命令发送强制退出信号来结束。如果结束不掉子进程,可以用kill命令发送强制退出信息来结束父进程。...

僵尸进程的产生和避免,如何kill杀掉linux系统中的僵尸defu

2013年12月17日 在Unix系统管理中,当用ps命令观察进程的执行状态时,经常看到某些进程的状态栏为defunct,这就是所谓的“僵尸”进程。“僵尸”进程是一个早已 死亡的进...

僵尸进程是如何产生的 - 百度知道

[专业]答案:一个进程在调用exit命令结束自己的生命的时候,其实它并没有真正的被销毁,而是留下一个称为僵尸进程(Zombie)的数据结构(系统调用exit,它的作用是使进程...

linux僵尸进程产生的原因以及如何避免产生僵尸进程 - 莫水

2016年2月25日 给 进程设置僵尸状态的目的是维护子进程的信息,以便父进程在以后某个时间获取。这些信息包括子进程的进程ID、终止状态以及资源利用信息(CPU时间,内存 ...

什么是僵尸进程,如何找到并杀掉僵尸进程?

2017年12月16日 如果你经常使用 Linux,你应该遇到这个术语“僵尸进程Zombie Processes”。 那么什么是僵尸进程? 它们是怎么产生的? 它们是否对系统有害? 我要怎样杀掉这些进程? 下...

Linux 僵尸进程产生原因及解决方法_Linux_脚本之家

2018年2月27日 这篇文章主要介绍了Linux 僵尸进程产生原因及解决方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

技术|什么是僵尸进程,如何找到并杀掉僵尸进程?

2017年12月14日 如果你经常使用 Linux,你应该遇到这个术语“僵尸进程Zombie Processes”。 那么什么是僵尸进程? 它们是怎么产生的? 它们是否对系统有害? 我要怎样杀掉这些进程? 下...