如何在 Ubuntu 18.04 LTS 中创建虚拟僵尸进程如何在 Ubuntu 18.04 LTS 中创建虚拟僵尸进程如何在 Ubuntu 18.04 LTS 中创建虚拟僵尸进程如何在 Ubuntu 18.04 LTS 中创建虚拟僵尸进程
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

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

发表 admin at 2025年2月28日
类别
  • 未分类
标签

作为软件测试人员,我们有时需要知道僵尸进程在我们的系统上是什么样子。如果我们具体知道哪个程序和进程 ID 与该僵尸进程相关联,我们就可以对其运行各种测试。

什么是僵尸进程?

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

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

但是,如果您的系统上没有运行僵尸进程,您可以创建一个虚拟进程用于测试目的,如本文所述。我们在 Ubuntu 18.04 上运行这个过程。

创建僵尸进程

在本节中,我们将编写一个 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 编译器,则需要通过以下命令安装 GNU C 编译器:

sudo apt-get install build-essential

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

./zombie

您将看到以下输出:

测试时可以使用父进程ID(PPID)和子进程ID(PID);例如通过kill命令杀死这个僵尸进程。

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

ps 命令现在还将显示这个已失效的进程以及负责它的僵尸程序:

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

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

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

©2015-2025 Norria support@norria.com