在 Linux 环境中终止僵进程
摘要: 什么是僵尸进程,如何找到它,以及如何杀死或终止它。
本文适用于
本文不适用于
本文并非针对某种特定的产品。
本文并非包含所有产品版本。
说明
什么是僵尸进程:
这是一个已结束的进程,但并非所有进程会立即从内存中删除,因为它的进程描述符仍保留在内存中。
进程的正常行为应该是什么:
进程结束时,进程的状态变为
然后,父进程应该运行
如何找到僵尸进程:
运行命令
运行命令
如何终止累积的僵尸进程:
大多数情况下,僵尸进程具有相同的父进程 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
受影响的产品
Dell OpenManage Enterprise, NetWorker Series文章属性
文章编号: 000019108
文章类型: How To
上次修改时间: 12 4月 2025
版本: 4
从其他戴尔用户那里查找问题的答案
支持服务
检查您的设备是否在支持服务涵盖的范围内。