当前位置: 首页>>技术教程>>正文


如何在Ubuntu 18.04 LTS中创建虚拟僵尸进程

,

Create dummy zombie process in Ubuntu

作为软件测试人员,有时我们需要了解僵尸进程在我们系统上的外观。如果我们明确知道哪个程序和进程ID与该僵尸进程相关联,我们可以对其进行各种测试。

什么是僵尸进程?

Linux中的僵尸进程或已消失的进程是已完成的进程,但由于父进程和子进程之间缺乏对应关系,其条目仍保留在进程表中。通常,父进程通过 wait()函数检查其子进程的状态。子进程完成后,等待功能会通知父进程完全从内存中退出该进程。但是,如果父级未能为其任何子级调用wait函数,则子级进程将作为死进程或僵尸进程在系统中保持活动状态。这些僵尸进程可能大量堆积在您的系统上,并影响其性能。

当您运行top命令并且正在运行僵尸时,输出的第二行将显示该僵尸,如下所示:

Zombie process shown in top command

但是,如果系统上没有正在运行的僵尸进程,则可以按照本文中的描述创建一个用于测试目的的虚拟对象。我们正在Ubuntu 18.04上运行此过程。

创建一个Zombie-Process

在本节中,我们将编写一个c程序来在我们的系统上运行一个僵尸进程。

打开文本编辑器,然后输入以下代码:

#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>int main ()
{
pid_t child_pid;child_pid = fork ();
if (child_pid > 0) {
sleep (60);
}
else {
exit (0);
}
return 0;
}

将此文件另存为zombie.c

通过此代码创建的僵尸进程将运行60秒。您可以通过在 sleep()函数中指定时间(以秒为单位)来增加持续时间。

打开终端并运行以下命令来编译该程序:

$ cc zombie.c -o zombie

现在将创建一个名为zombie的可执行文件。

请注意,如果尚未通过以下命令将GNU C编译器安装在系统上,则需要安装它:

$ sudo apt-get install build-essential

现在,通过以下命令运行僵尸程序:

./zombie

您将看到以下输出:

Output of zombie file

您可以在测试过程中使用父进程ID(PPID)和子进程ID(PID)。例如,通过kill命令杀死该僵尸进程。

在此过程运行期间,您可以通过top命令在另一个“终端”窗口中查看系统性能。您将能够通过输出的第二行看到1个僵尸进程。

ps命令现在还将显示此已终止的进程以及负责该进程的僵尸程序:

$ ps axo stat,ppid,pid,comm | grep -w defunct

Result of ps command

该命令将为您提供状态,parentID,进程ID,正在运行僵尸进程的程序(我们在本教程中运行的僵尸程序)。

您现在已经了解了如何创建简单的虚拟僵尸进程。这将使您了解它在系统上的外观以及如何将其用于测试目的。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/8193.html,未经允许,请勿转载。