在 Linux 环境中终止僵进程

Summary: 什么是僵尸进程,如何找到它,以及如何杀死或终止它。

Ez a cikk a következő(k)re vonatkozik: Ez a cikk nem vonatkozik a következő(k)re: Ez a cikk nem kapcsolódik egyetlen konkrét termékhez sem. Ez a cikk nem azonosítja az összes termékverziót.

Instructions

什么是僵尸进程:
这是一个已结束的进程,但并非所有进程会立即从内存中删除,因为它的进程描述符仍保留在内存中。

进程的正常行为应该是什么:
进程结束时,进程的状态变为 EXIT_ZOMBIE 并且进程的父进程会收到通知,其子进程已随 SIGCHLD 信号。

然后,父进程应该运行 wait() 系统调用读取无效进程的退出状态和其他信息。之后 wait() 调用,僵尸进程从内存中删除。这种情况发生得很快,因此您不会看到系统上积聚僵尸进程。但是,在我们看到几个僵尸进程累积的情况下,这是程序代码效率不高的情况。

如何找到僵尸进程:
运行命令 top
Top 命令的结果

运行命令 ps -ef | grep defunct
失效命令的结果

如何终止累积的僵尸进程:
大多数情况下,僵尸进程具有相同的父进程 ID。

有两种方法可以删除该过程:
  • 发送 SIGCHLD 向父进程发出信号。
此信号告知父进程运行 wait() 系统调用并清理其僵尸子项:
kill -s SIGCHLD <PPID>
示例:
kill -s SIGCHLD 2201
  • 终止僵尸父进程
kill -9 <PPID>
示例:
kill -9 2201

Érintett termékek

Dell OpenManage Enterprise, NetWorker Series
Termék tulajdonságai
Article Number: 000019108
Article Type: How To
Utoljára módosítva: 12 ápr. 2025
Version:  4
Választ kaphat kérdéseire más Dell-felhasználóktól
Támogatási szolgáltatások
Ellenőrizze, hogy a készüléke rendelkezik-e támogatási szolgáltatással.