如何在Ubuntu 18.04 LTS上杀死僵尸进程

僵尸消失的过程 Linux进程已完成,但是其条目保留在进程表中,因为父进程和子进程之间没有对应关系。通常,父进程会使用wait()函数继续检查子进程的状态。当子进程退出时,wait函数将信号发送给父进程,从而完全从内存中杀死该进程。但是,如果父级未能调用子级的wait函数,则子进程将在系统中作为死进程或僵尸进程幸存下来。这些僵尸进程会在系统上大量积累并影响性能。在这种情况下,您将需要使用本教程中介绍的方法和命令手动杀死这些僵尸。

显示僵尸进程

您可以通过查看系统上运行的各种进程来检查系统性能,例如,改变效率的僵尸进程。在Ubuntu中,您可以通过以下方式查看这些过程:

  • 使用图形用户界面
  • 从命令行

通过GUI

要以图形方式显示系统上运行的僵尸进程, 系统监控器 通过Ubuntu Dash的实用程序。以下系统监视器屏幕截图显示了系统中正在运行两个僵尸。在许多情况下,系统上的僵尸进程数量少于我的僵尸进程数量。

在GUI中显示僵尸进程

从命令行

以上 该命令显示系统上正在运行的进程以及它们正在使用的内存和CPU资源的详细视图。它还提供有关在系统上运行的僵尸进程的信息。按下以打开终端 Ctrl + Alt + T 然后 以上。运行此命令将产生以下输出:

$顶部

在命令行上找到僵尸进程

第二行显示系统上正在运行一个僵尸进程。

如果您需要有关僵尸进程的更多信息,请使用以下命令:

$ ps axo stat,ppid,pid,comm | grep -w defunct

获取有关Linux僵尸进程的详细信息

该命令提供状态,parentID,进程ID和运行僵尸进程的程序(系统上名为“ zombie”的虚拟程序)。无效标志指示这是一个死僵尸进程。

杀死僵尸进程

首先,了解僵尸进程如何对系统性能造成威胁。重要的是要知道僵尸已经死了,并且大多数不消耗内存或CPU资源的进程都已完成。但是,这些进程中的每个进程都有一个唯一的进程ID,该ID来自为处理器保留的有限PID池。如果大量僵尸聚集在一起,它们将耗尽PID池,并且由于缺少进程ID而将无法启动新进程。

已经停止占用系统的一些功能的程序并不是主要威胁,但是这意味着由于错误或缺少wait()函数,父程序无法调用它们。

如果父进程无法自动调用wait()函数,则需要手动通知父进程对所有子进程执行wait函数,以便可以调用完整的子进程。有为此,请执行SIGCHLD命令。如果这不起作用,则可以手动杀死父进程,杀死其所有僵尸子进程,并释放新进程的进程ID。

您可以通过以下方式杀死僵尸进程:

  • 使用图形用户界面
  • 从命令行

通过GUI

您可以使用系统监视器实用程序以图形方式杀死僵尸进程,如下所示:

  1. 开门 系统监控器 通过Ubuntu Dash的实用程序。
  2. 搜寻字词 僵尸 通过 正在搜寻 按钮
  3. 选择僵尸进程,右键单击并选择 杀死 从菜单。

如何在Linux桌面上杀死僵尸进程

僵尸进程将被系统杀死。

从命令行

如果使用top命令发现僵尸进程正在系统上运行,请查看进程详细信息。

通常的方法是使用以下命令强制僵尸父进程终止该命令:

$ kill -s SIGCHLD PID

在某些情况下,此命令可能不起作用,因为并非所有父流程都已通过子流程顺序检查正确编程。在这种情况下,可以使用以下命令杀死父进程:

$ sudo kill -9 3376

在命令行杀死僵尸进程

以这种方式杀死所有僵尸进程并运行top命令表明,系统上没有正在运行的僵尸进程。

僵尸进程已结束

遵循本教程之后,您可以通过在系统上找到僵尸进程并使用命令行或图形用户界面手动将其杀死来优化操作系统。该操作将释放系统上运行的新进程的进程ID。

如何在Ubuntu 18.04 LTS上杀死僵尸进程

Sidebar