目录

简介

先决条件

要求

使用的组件

背景信息

使用UCOS管理CLI检查僵尸计算机

手动排除/清除僵尸

重新启动适当的服务

重启服务器

终止父进程

验证

简介

本文档介绍如何使用管理CLI登录时在CUCM、IMnP和其他思科统一通信产品上看到的僵尸进程。

先决条件

要求

思科建议您了解使用统一通信服务器的管理CLI:

- 思科统一通信管理器 (CUCM)

- 思科统一即时消息和在线状态服务器(IMnP)

- 思科Unity Connection服务器(CUC)

使用的组件

本文档不限于特定的软件和硬件版本。

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您的网络处于活动状态，请确保您了解所有命令的潜在影响。

背景信息

统一通信服务器本质上是基于Linux操作系统的应用。当进程在Linux上失效时，并非所有进程都立即从内存中删除，其进程描述符(PID)保留在内存中，只占用很少的内存。此进程将成为失效进程，并通知进程的父进程其子进程已死亡。然后，父进程应读取死进程的退出状态并将其从内存中完全删除。使用wait()系统调用完成此操作后，即会从进程表中排除僵尸进程。这称为获取僵尸进程。这通常发生得非常快，因此您不会看到僵尸进程在系统上累积。

但是，有时父进程不执行wait()信号调用，子进程将保留在内存中，直到清理完毕。换句话说，僵尸进程是执行已完成但仍在进程表中有一个条目的进程，因为父进程仍需要读取其子进程的退出状态。

使用UCOS管理CLI检查僵尸计算机

在CLI中，可使用命令show process load检查僵尸的存在。

手动排除/清除僵尸

除前面提到的用于保存PID的微小内存外，僵尸进程不使用任何系统资源，但它们保留其进程ID。在UC服务器中，提供给系统的内存很大，因此系统由于僵尸计算机的存在而耗尽其他进程的PID的可能性很小。

因此，僵尸计算机可以留在系统上，在下次系统重新启动时自动清除僵尸计算机。

但是，如果系统中有清除僵尸计算机的要求，您可以执行特定操作

重新启动适当的服务

需要确定相关流程，从而找出泄漏子流程的服务。

1. 从CLI输出中，获取show process list和show process list detail的输出结果。

2. 在文本编辑器中复制输出并搜索文本“已失效”。

3. 记下这些已失效进程的进程ID(pid)和父进程ID(ppid)。

4. 在文档中跟踪ppid以查找相关流程。

示例 1

CUCM:当我搜索文件中的文本“defent”时，我看到有个PID 22908已失效。

该PID的ppid是29815。在本文中29815的跟踪中，我发现该过程与AMC服务有关。

解决方案 — 在此节点上重新启动AMC(警报管理器和收集器服务)可清除僵尸。

示例 2

CUCM:当搜索文本不存在的文件时，我看到有一个PID 10025已不存在。

该PID的ppid为26732。在文档中跟踪26732时，您会看到该进程与跟踪收集服务相关。

解决方案 — 在此节点上重新启动跟踪收集服务可清除僵尸。

示例 3

CUCM：搜索文本不存在的文件时，您会看到有一个PID 23959已不存在。

该PID的ppid为26764。在文档中跟踪26764时，我看到该进程与CDR存储库服务(cdrrep)相关

解决方案 — 重新启动CDR存储库服务可清除此僵尸。

示例 4

CUC：搜索文本不存在的文件时，您会看到有三个PID 325、370、387已不存在。

所有这些PID的ppid是7827。在文档中跟踪7827时，您会看到该进程与连接文件同步器服务相关。

解决方案 — 重新启动连接文件同步器服务会清除僵尸。

示例 5

IMnP：搜索文本不存在的文件时，您会看到PID 1806已不存在。

该PID的ppid是1775。在文档中跟踪1775时，您会看到该进程是与同一集群中另一个IMnP节点的SFTP连接。

解决方案 — 在IMnP中，可能会看到SFTP拥有的已失效SSH进程。已发现它们是修饰的，可通过重新启动服务器来移除。

重启服务器

重新启动相关服务器会清除进程表中的所有过时条目，并因此清除系统中的僵尸。

终止父进程

在Linux中，你不能像使用SIGKILL信号扼杀正常进程那样扼杀僵尸进程 — 僵尸进程已经死亡。但是，您可以终止父进程。该场景中使用的命令如下：

kill -9 <ppid>

请联系TAC以执行此解决方法。在终止父进程时确保小心，以确保不突然中断任何关键服务。

验证

清除僵尸后，使用相同的命令show process load检查僵尸计数。