linux上的“僵尸进程”是什么?

如果您是Linux用户,您可能看到僵尸进程在进程列表中蹒跚而行。你不能杀死一个僵尸进程,因为它已经死了-就像一个真正的僵尸。...

如果您是Linux用户,您可能看到僵尸进程在进程列表中蹒跚而行。你不能杀死一个僵尸进程,因为它已经死了-就像一个真正的僵尸。

僵尸基本上是没有被正确清理的死进程的剩余部分。创建僵尸进程的程序没有正确编程——程序不应该让僵尸进程继续存在。

什么是僵尸程序?

要了解什么是僵尸进程以及僵尸进程出现的原因,您需要了解一些进程在Linux上的工作方式。

当一个进程在Linux上死掉时,它不会立即从内存中全部删除—它的进程描述符保留在内存中(进程描述符只占用很少的内存)。进程的状态变为EXIT\u ZOMBIE,并通知进程的父进程其子进程已死亡,同时发出SIGCHLD信号。然后父进程应该执行wait()系统调用来读取死进程的退出状态和其他信息。这允许父进程从死进程获取信息。调用wait()后,僵尸进程将从内存中完全删除。

这种情况通常发生得很快,因此您不会看到僵尸进程在系统中累积。但是,如果父进程没有正确编程并且从不调用wait(),那么它的僵尸子进程将一直留在内存中,直到它们被清除。

像GNOME System Monitor、top命令和ps命令这样的实用程序显示僵尸进程。

linux上的“僵尸进程”是什么?

僵尸进程的危险

僵尸进程不会占用任何系统资源。(实际上,每个僵尸进程都使用非常少量的系统内存来存储其进程描述符。)但是,每个僵尸进程都保留其进程ID(PID)。Linux系统有有限数量的进程ID—在32位系统上默认为32767。如果僵尸以非常快的速度累积(例如,如果未正确编程的服务器软件在负载下创建僵尸进程),则整个可用PID池最终将分配给僵尸进程,从而阻止其他进程启动。

然而,一些僵尸进程挂起是没有问题的——尽管它们确实表明您的系统上它们的父进程有一个bug。

linux上的“僵尸进程”是什么?

摆脱僵尸进程

你不能杀死僵尸进程,因为你可以用SIGKILL信号杀死普通进程-僵尸进程已经死了。请记住,除非您的系统上有大量的僵尸进程,否则您不需要摆脱僵尸进程—少数僵尸是无害的。但是,有几种方法可以摆脱僵尸进程。

一种方法是向父进程发送SIGCHLD信号。这个信号告诉父进程执行wait()系统调用并清除其僵尸子进程。用kill命令发送信号,用父进程的pid替换下面命令中的pid:

kill -s SIGCHLD pid

但是,如果父进程没有正确编程,并且忽略了SIGCHLD信号,这将无济于事。你必须杀死或关闭僵尸的父进程。当创建zombie的进程结束时,init继承zombie进程并成为它们的新父进程。(init是在Linux引导时启动的第一个进程,被分配为PID 1。)init定期执行wait()系统调用来清除其zombie子进程,因此init将对zombie进行短期处理。您可以在关闭父进程后重新启动它。

如果父进程继续创建zombie,则应该对其进行修复,以便正确调用wait()以获取其zombie子进程。如果系统上的程序一直在创建僵尸,请提交错误报告。

  • 发表于 2021-04-09 02:21
  • 阅读 ( 152 )
  • 分类:互联网

你可能感兴趣的文章

你能在linux上运行它吗?11个在linux上运行的windows应用程序

... 2linux上的minecraft ...

  • 发布于 2021-03-11 00:39
  • 阅读 ( 299 )

如何在linux上安装和使用powershell

...Linux和macOS安装程序。由于系统管理员经常使用Linux,Linux上的PowerShell带来了很多新功能。虽然它本质上是同一个程序,但是有一些关键的区别,比如在Linux PowerShell中运行标准Bash命令的能力。 ...

  • 发布于 2021-03-16 02:34
  • 阅读 ( 303 )

如何让2017年成为linux桌面年

...允许您在开始安装之前演示这种体验,其中包括按照屏幕上的提示操作,就好像您是第一次在Windows中运行程序一样。 ...

  • 发布于 2021-03-16 11:36
  • 阅读 ( 309 )

你应该关注twitter上的11个linux帐户

... 加入Searls在Twitter上的超过23000名追随者。 ...

  • 发布于 2021-03-16 17:25
  • 阅读 ( 227 )

为什么应该(不应该)双引导linux的7个原因

... 面对现实,这两种操作系统各有利弊。Windows上的本地游戏更好,而Linux上的编程比Windows上的要好得多。当然,多亏了Steam操作系统,才推动了游戏的交叉兼容性优化。像《外星人:隔离与半条命2》这样的书在Windows...

  • 发布于 2021-03-17 06:05
  • 阅读 ( 211 )

如何在linux上杀死僵尸进程

... 相关:如何在Linux上运行和控制后台进程 是什么导致linux上的僵尸进程? 编写不好的父进程在创建子进程时可能不会调用wait()函数。这意味着没有任何东西在监视子进程中的状态变化,SIGCHLD信号将被忽略。或者,另一个应用...

  • 发布于 2021-04-01 07:47
  • 阅读 ( 233 )

crosh与chromebook上的linux终端有何不同?

...和输入提示的Chromebook的新Chrome选项卡,从而访问Chromebook上的Crosh。很简单。 克罗什的好处是,如果你永远不用它,你永远不会知道它在那里。换言之,你不可能不小心跌入嘎吱作响,把事情搞砸。它不会妨碍超级用户,也不会...

  • 发布于 2021-04-04 09:19
  • 阅读 ( 279 )

windows10上的ubuntu、opensuse和fedora有什么区别?

...务器,让该web服务器与运行在SUSE Linux Enterprise server实例上的数据库进行通信,然后通过安装在Windows 10 PC上的标准web浏览器访问该web服务器。由于所有软件都在运行,因此无需任何额外的防火墙配置即可运行在你的电脑上,防火...

  • 发布于 2021-04-07 03:39
  • 阅读 ( 188 )

为什么~代表macos和linux上的主文件夹?

...角的钥匙了吗?这就是HOME键,它的作用类似于现代键盘上的HOME键,在编辑文本时将光标移到左上角。它也是波浪形符号的键:~。这种关联足以让~最终表示主文件夹。 没错:40多年前的一个特定键盘就是为什么基于Linux和UNIX的...

  • 发布于 2021-04-07 04:26
  • 阅读 ( 143 )

linux和macos上的lost+found文件夹是什么?

...。 大多数UNIX文件系统都有一个lost+found文件夹,包括Linux上的ext2、ext3和ext4,以及macOS上的HFS+文件系统。有些文件系统可能不使用“丢失+找到”文件夹,但它们在这些操作系统上不太常见。 在那里你可以找到失物招领文件夹 相...

  • 发布于 2021-04-08 16:10
  • 阅读 ( 259 )
ietzyvztuvbzq
ietzyvztuvbzq

0 篇文章

相关推荐