在 Linux 环境中终止僵进程
Summary: 什么是僵尸进程,如何找到它,以及如何杀死或终止它。
This article applies to
This article does not apply to
This article is not tied to any specific product.
Not all product versions are identified in this article.
Instructions
什么是僵尸进程:
这是一个已结束的进程,但并非所有进程会立即从内存中删除,因为它的进程描述符仍保留在内存中。
进程的正常行为应该是什么:
进程结束时,进程的状态变为
然后,父进程应该运行
如何找到僵尸进程:
运行命令
运行命令
如何终止累积的僵尸进程:
大多数情况下,僵尸进程具有相同的父进程 ID。
有两种方法可以删除该过程:
这是一个已结束的进程,但并非所有进程会立即从内存中删除,因为它的进程描述符仍保留在内存中。
进程的正常行为应该是什么:
进程结束时,进程的状态变为
EXIT_ZOMBIE 并且进程的父进程会收到通知,其子进程已随 SIGCHLD 信号。
然后,父进程应该运行
wait() 系统调用读取无效进程的退出状态和其他信息。之后 wait() 调用,僵尸进程从内存中删除。这种情况发生得很快,因此您不会看到系统上积聚僵尸进程。但是,在我们看到几个僵尸进程累积的情况下,这是程序代码效率不高的情况。
如何找到僵尸进程:
运行命令
top
运行命令
ps -ef | grep defunct
如何终止累积的僵尸进程:
大多数情况下,僵尸进程具有相同的父进程 ID。
有两种方法可以删除该过程:
- 发送
SIGCHLD向父进程发出信号。
此信号告知父进程运行
wait() 系统调用并清理其僵尸子项:
kill -s SIGCHLD <PPID>
示例:
kill -s SIGCHLD 2201
- 终止僵尸父进程
kill -9 <PPID>
示例:
kill -9 2201
Affected Products
Dell OpenManage Enterprise, NetWorker SeriesArticle Properties
Article Number: 000019108
Article Type: How To
Last Modified: 12 Apr 2025
Version: 4
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.