Skip to main content
  • Place orders quickly and easily
  • View orders and track your shipping status
  • Enjoy members-only rewards and discounts
  • Create and access a list of your products

在 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

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

进程的正常行为应该是什么:
进程结束时,进程的状态变为 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

Affected Products

Dell OpenManage Enterprise, NetWorker Series
Article Properties
Article Number: 000019108
Article Type: How To
Last Modified: 06 Aug 2024
Version:  3
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.