Linux下什么是僵尸进程Linux下什么是僵尸进程Linux下什么是僵尸进程Linux下什么是僵尸进程
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

Linux下什么是僵尸进程

Linux 系统上运行的所有内容都是一个进程,要么发生在前台(用户可见),要么发生在后台(不明显的进程,如系统服务)。进程可以处于多种状态,包括正在运行、不可中断睡眠、可中断睡眠、停止和僵尸。但什么是僵尸进程呢?

在本教程中,我们将讨论 Linux 上的僵尸进程。我们将讨论它们的定义、目的以及如何在 Linux 系统上识别和删除它们。

在本教程中您将学习:

  • 什么是僵尸进程以及它们为何存在?

  • 如何识别僵尸进程

  • 如何杀死僵尸进程

什么是僵尸进程?

如上所述,Linux 进程可以处于几种不同的状态。我们关心的是僵尸进程。僵尸进程是已完成执行的进程——要么优雅地关闭,要么强制关闭。该进程已死亡(因此得名),但仍然存在于进程表中。它只是还没有被清除,但它已经不再运行了。这是一个尚未完全消失的死进程,有点像……僵尸!

注意
僵尸进程有时也称为失效进程。当进程收到 SIGCHLD 信号时,就会进入僵尸状态。

僵尸进程通过 wait() 或 waitpid() 等待其父进程读取其退出值,然后将其从进程表中清除。如果父进程退出,那么 init 将销毁其剩余的僵尸进程。

识别并杀死僵尸进程

能够轻松识别僵尸进程的好方法并不多。这不是用户通常需要关心的事情,因为系统完全有能力管理僵尸进程。唯一的例外可能是一个有缺陷的程序,它不断地生成子进程并且从不正确地清除它们。

不过,如果您决心寻找僵尸进程,我们可以使用 ps 命令。使用以下选项过滤掉 PID 和状态列。然后,我们将通过管道连接到 awk,以便仅显示状态为“Z”(僵尸)的进程。


$ ps axo pid=,stat= | awk '$2~/^Z/ { print }'

再说一次,通常不需要识别这些进程,更不用说杀死它们了。然而,一个简单的终止命令就可以解决问题。只需提供之前检索到的 PID 作为命令的参数即可。


$ kill 1234

如果它不起作用,您可以通过在命令中使用 -9 选项来发送 SIGKILL 信号:


$ kill -9 1234

结束语

在本教程中,我们了解了 Linux 系统上的僵尸进程是什么。我们还了解了如何识别我们自己系统上的僵尸进程,并手动销毁它们。僵尸状态只是进程可能处于的五种可能状态之一——所有状态都有自己的重要目的。

©2015-2025 艾丽卡 support@alaica.com