如何在Ubuntu 18.04 LTS上創建虛擬殭屍進程

作為軟件測試人員,您可能需要了解殭屍程序在系統上的外觀。如果您確切知道哪個程序和進程ID與殭屍進程相關聯,則可以運行各種測試。

什麼是殭屍進程?

Linux殭屍進程或非功能性進程是已完成的進程,但是其條目保留在進程表中,因為父進程和子進程之間沒有對應關係。通常,父進程會使用wait()函數繼續檢查子進程的狀態。當子進程退出時,wait函數將信號發送給父進程,從而完全從內存中殺死該進程。但是,如果父級未能調用子級的wait函數,則子進程將在系統中作為死進程或殭屍進程倖存下來。這些殭屍進程會在系統上大量積累並影響性能。

如果您運行top命令並且殭屍正在運行,它們將在輸出的第二行中顯示,如下所示:

殭屍進程顯示在top命令中

但是,如果您的系統沒有正在運行的殭屍進程,則可以創建一個虛擬對象以進行測試,如本文所述。我正在Ubuntu 18.04上運行此過程。

創建殭屍進程

在本部分中,您將創建一個在系統上運行殭屍進程的c程序。

打開文本編輯器,然後輸入以下代碼:

代號

#include 
#include 
#include 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

顯示以下輸出。

殭屍文件輸出

在測試期間,您可以使用父進程ID(PPID)和子進程ID(PID)。例如,使用kill命令殺死該殭屍進程。

運行此過程時,可以使用top命令在單獨的終端窗口中查看系統性能。您可以從輸出的第二行看到一個殭屍進程。

ps命令還顯示此無效進程以及負責該進程的殭屍程序。

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

ps命令結果

該命令提供狀態,parentID,進程ID以及運行殭屍進程的程序(本教程中運行的殭屍程序)。

您現在已經了解了如何創建簡單的虛擬殭屍進程。這將使您了解系統的外觀以及如何將其用於測試目的。

如何在Ubuntu 18.04 LTS上創建虛擬殭屍進程

Sidebar