开源学村教程短文资讯

如何在Linux上杀死僵尸进程

消灭僵尸进程!

也称为“defunct”或“dead”进程 - 简单来说,僵尸进程是指已经结束,但仍存在于系统进程表中的进程。理想情况下,一旦进程完成其工作/执行,它应该从进程表中清除。但由于某些原因,其父进程在执行后没有正确清理它。

在一个公正的(Linux)世界中,进程在完成其执行并退出后会通知其父进程。然后父进程将从进程表中删除进程。如果父进程无法从其子进程(已完成的进程)读取进程状态,则它将无法将进程从内存中删除,因此该进程仍将继续存在于进程表中 - 因此被称为Zombie(僵尸进程)!

为了杀死僵尸进程,我们首先需要识别它。以下命令可用于查找僵尸进程:

$ps aux | egrep "Z|defunct"

在输出的STAT列中的Z和/或最后一个(COMMAND)列中的[defunct]将标识僵尸进程。

现实中你无法杀死一个僵尸进程,因为它已经死了!可以做的是显式地通知其父进程,以便它可以重试读取子(已死)进程的状态并最终从进程表中清除它们。这可以通过向父进程发送SIGCHLD信号来完成。以下命令可用于查找父进程ID(PID):

$ ps -o ppid= <Child PID>

一旦您拥有了僵尸进程的父进程ID,您可以使用以下命令向父进程发送SIGCHLD信号:

$ kill -s SIGCHLD <Parent PID>

然而,如果这不能帮助清除僵尸进程,您将不得不杀死或重启其父进程,或者在僵尸进程的数量激增并导致系统故障时,您将别无选择,只能进行系统重启。以下命令可用于杀死其父进程:

$ kill -9 <Parent PID>

请注意,杀死父进程将影响其所有子进程,因此快速双重检查将有助于确保安全。或者,如果存在几个僵尸进程不会占用太多CPU/内存,最好在下一次计划的系统维护期间杀死父进程或重新启动系统。

推荐文章

  1. "How to Kill Zombie Processes in Ubuntu 20.04"
  2. "How to Kill Zombie Processes in Linux with Examples"

对这篇文章感觉如何?

太棒了
0
不错
0
爱死了
1
不太好
0
感觉很糟
0

You may also like

Leave a reply

您的邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

More in:开源学村

开源学村

SoCal Linux博览会回归20周年

现在已经是支持和推广FOSS社区的第20个年头了,SCaLE 20x - 南加州Linux博览会将于2023年3月9日至12日在帕萨迪纳会议中心举行。 这个为期4天的年度活动汇集了充满活力的开源用户社 […]
开源学村

2022年,从学习Rust开始

Rust作为一个新语言,已经连续五年(2016,2017,2018,2019,2020)在Stack Overflow开发者调查的“最受喜爱编程语言”。Rust是一个值得学习的编程语言,它对安全的专注,会帮助你许多。学习Rust 从这本小小的Rust Cheat Sheet出发,了解Rust语言的基本操作。
开源学村

使用 Linux 命令行解决Wordle 问题

你可以使用 Linux 的 grep 命令和 fgrep 命令来解决Wordle 问题(进行筛选排除),grep 命令使用正则表达式进行搜索,fgrep 命令也像 grep 一样搜索文本,但不使用正则表达式,grep 和 fgrep 命令在扫描单词列表时提供了极大的灵活性。
开源学村

如何杀死 Linux 中的僵尸进程

在使用操作系统工作时,要时刻注意保持对系统中进程的掌控。一旦僵尸进程占满了你的资源,就只能依靠重新启动来挽回一切了。所以快来学习用 kill 指令来杀灭僵尸进程吧!