僵尸进程

从中读取条目 拉夫 我记得在一个论坛上有人因系统运行缓慢而寻求帮助,其中一些解决方案侧重于流程。

Linux中进程的主要状态是:
睡觉(S) :正在等待轮流执行的进程。
跑步(R) :正在运行的进程。
等待(D) :等待进入/退出操作完成的过程。
僵尸(Z) :已经结束但继续出现在进程表中的进程。 它们可能是由编程错误引起的,并且可能是系统运行缓慢或引起问题的症状。

僵尸进程是从未从创建它的父进程接收到信号的进程,子进程是其起源于称为父进程的更高级别进程的进程,该父进程负责将信号发送给子进程它产生的表明其寿命已经结束的过程。

它们可能是由编程错误引起的,并且可能是系统运行缓慢或引起问题的症状。 通常也会发生这种情况,也是因为开发人员未考虑某些配置。

在Wikipedia中,您可以 阅读更多 关于这些过程。

执行top命令可以实时查看系统中正在执行的进程,它将指示是否有任何进程处于僵尸状态,但不会指示哪个进程处于僵尸状态。

过程

要查看所有过程,请在终端中输入: ps aux,并仅查看僵尸: ps -el | grep'Z'o ps -A -ostat,ppid,pid,cmd | grep -e'^ [Zz]'

阿尔夫@ Alf〜$ ps -A -ostat,ppid,pid,cmd | grep -e'^ [Zz]'

Ž1945

如果在列出进程时,其中一个进程的状态为Z,则表示该进程是僵尸,这又意味着该应用程序未得到很好的解决或存在错误,可以通过执行类似于以下命令来消除其PID:在终端中,在此示例中: 

阿尔夫@ Alf〜$ 杀死-9 1945

当您有多个僵尸进程或至少一个以上的僵尸进程时,可以使用以下命令将其杀死,这仅适用于此,如果您在没有僵尸进程的情况下运行它,则将不会发生任何事情:

阿尔夫@ Alf〜$ sudo kill -HUP`ps -A -ostat,ppid,pid,cmd | grep -e'^ [Zz]'| awk'{print $ 2}'''

问候


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。

  1.   正确

    🙁

  2.   奥斯卡

    非常感谢,我要保存命令以进行定期验证。

  3.   乔希

    谢谢,好文章。

  4.   MSX

    有关您的文章的一些说明:

    “僵尸进程”一词在技术上是不合适的,对GNU / Linux有一点经验的我们应该避免使用它,因为它本身没有进程在运行,但是它仅是指在Windows中不再存在的进程。系统,他没有释放他的标识符。

    实际上,“僵尸进程”是进程标识符(进程描述符)在映射表中的条目,因此,它不会消耗系统用来跟踪进程表的内存的几个字节以外的资源。

    幽灵(或僵尸)注册表描述符可能存在的唯一问题是,如果它们生成速度太快,它们理论上可能会占据整个进程描述符分配表,从而使系统没有空间容纳新记录,因此可能无法运行新程序-记录他们的过程-最终使机器挂断。

    但是,这几乎是不可能发生的,因为在32位系统中,有32767个空间来注册进程(很少使用或从未使用过),而在64位系统中是该空间的两倍。

    导致严重删除死进程的系统崩溃的唯一方法是创建进程并迅速杀死它们,而没有正确清理进程描述符(即创建“僵尸进程”),但是,如果有人想挂起一个进程,让我们面对现实吧系统有比这更多的直接方法。 以指数方式快速开始创建新进程,从而阻塞系统并挂起它; 用叉子炸弹实现这一目标的方法之一:

    :(){:|:&};:

    您可以通过正确配置/etc/security/limits.conf来使系统对分叉炸弹具有相对的抵抗力,尽管必须考虑的是,我们越限制创建新进程的可能性,我们将能够运行更少的应用程序但是,对于所有想对自己的系统进行很好控制的偏执的sysadmin来说,它是一个有效的工具!

    本文提供了有关无效进程描述符的良好信息:
    http://www.howtogeek.com/119815/htg-explains-what-is-a-zombie-process-on-linux/
    在此有一个关于叉炸弹如何工作的清晰解释: http://stackoverflow.com/questions/991142/how-does-this-bash-fork-bomb-work

    Salu2

    1.    乔泰勒

      msx:«术语“僵尸进程”在技术上是不合适的,我们中对GNU / Linux有所了解的人应该避免使用它……”哈哈哈。 只有比您的骄傲更大的东西:您的不良品味。 嘿,您做的不好,如果您想授课,在学院任教,或者写您自己的博客并写下您想要的东西,但是来到这里将公寓改正为好Alf确实很不好。 。

      1.    费尔南多·罗哈斯

        事实似乎是一个非常有趣的评论。 比帖子更多

  5.   普拉托诺夫

    谢谢你,很有意思。

  6.   腐烂87

    优秀的文章谢谢

  7.   阿尔夫

    MSX
    «术语“僵尸进程”在技术上是不合适的,对GNU / Linux缺乏经验的我们应该避免使用它”

    我们将不得不通知开发人员,因为如您所见,还使用了僵尸一词,因此我在控制台上阅读了该词。

    问候

  8.   城市

    恭喜,非常好的文章,我一直怀疑它们是PZ,但我从来没有时间进行调查,现在我转到页面,找到了答案……。

  9.   特鲁科22

    在带有控制+逃生系统的KDE中,活动会消失,我们可以迅速杀死那些僵尸。

  10.  

    更正,这是ZOMBIE而不是ZOMBIE进程
    僵尸是英语
    西班牙僵尸

  11.   艾琳克斯

    豪华,谢谢!

  12.   罗伯托

    首先,僵尸一词似乎完全正确。 该术语也是最不重要的。
    关键是,正如msx所指示的,并且同一个维基百科(我读过这篇文章),僵尸进程真的死了。
    «当进程结束时,将取消其所有内存和关联资源的引用,以便其他进程可以使用它们。 无论如何,过程表中的过程条目仍然保留»
    也就是说,该过程不再占用系统资源,因此,系统上的负载最小,如msx所述。
    但是,它唯一拥有的是进程表中的无效条目……如果其中有数千个条目,则可能是一个负担(毕竟,处理器必须读取进程表,并且它将读取很多内容)除了反映不良的编程习惯(有人制作的应用程序制作不善)之外,还包括大量无用的信息。
    但是,从本质上讲,该帖子的解释不是那么正确,正确的解释应该是msx给出的解释。