Januar 14, 2022

VITUX

Erstellen Sie einen Dummy-Zombie-Prozess in Ubuntu

Als Softwaretester müssen wir manchmal wissen, wie ein Zombie-Prozess auf unserem System aussieht. Wir können verschiedene Tests darauf ausführen, wenn wir genau wissen, welche Programm- und Prozess-ID diesem Zombie-Prozess zugeordnet ist.

Was ist ein Zombie-Prozess?

Ein Zombie oder ein nicht mehr funktionierender Prozess unter Linux ist ein Prozess, der abgeschlossen wurde, dessen Eintrag jedoch aufgrund fehlender Übereinstimmung zwischen dem übergeordneten und dem untergeordneten Prozess in der Prozesstabelle verbleibt. Normalerweise überprüft ein übergeordneter Prozess den Status seiner untergeordneten Prozesse über die Funktion wait (). Wenn der untergeordnete Prozess beendet ist, signalisiert die Wartefunktion dem übergeordneten Prozess, den Prozess vollständig aus dem Speicher zu beenden. Wenn das übergeordnete Element jedoch die Wartefunktion für eines seiner untergeordneten Elemente nicht aufruft, bleibt der untergeordnete Prozess im System als toter oder Zombie-Prozess am Leben. Diese Zombie-Prozesse können sich in großer Zahl auf Ihrem System ansammeln und dessen Leistung beeinträchtigen.

Wenn Sie den Befehl top ausführen und ein Zombie ausgeführt wird, wird dies in der zweiten Zeile der Ausgabe wie folgt angezeigt:

 Zombie-Prozess gezeigt in top command

Wenn jedoch kein Zombie-Prozess auf Ihrem System ausgeführt wird, können Sie einen Dummy zu Testzwecken erstellen, wie in diesem Artikel beschrieben. Wir führen diesen Prozess unter Ubuntu 18.04 aus.

Erstellen eines Zombie-Prozesses

In diesem Abschnitt schreiben wir ein C-Programm, um einen Zombie-Prozess auf unserem System auszuführen.

Öffnen Sie einen Texteditor und geben Sie den folgenden Code ein:

Code

#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;}

Speichern Sie diese Datei als Zombie.c

Der mit diesem Code erstellte Zombie-Prozess wird 60 Sekunden lang ausgeführt. Sie können die Zeitdauer erhöhen, indem Sie in der Funktion sleep() eine Zeit (in Sekunden) angeben.

Öffnen Sie das Terminal und führen Sie den folgenden Befehl aus, um dieses Programm zu kompilieren:

$ cc zombie.c -o zombie

Nun wird eine ausführbare Datei mit dem Namen Zombie erstellt.

Bitte beachten Sie, dass Sie den GNU C-Compiler installieren müssen, wenn er noch nicht auf Ihrem System installiert ist, indem Sie den folgenden Befehl ausführen:

$ sudo apt-get install build-essential

Führen Sie nun das Zombie-Programm mit dem folgenden Befehl aus:

./zombie

Sie sehen die folgende Ausgabe:

 Ausgabe der Zombie-Datei

Sie können die übergeordnete Prozess-ID (PPID) und die untergeordnete Prozess-ID (PID) während des Tests verwenden.

Während dieser Prozess ausgeführt wird, können Sie die Systemleistung in einem anderen Terminalfenster über den Befehl top anzeigen. Sie können 1 Zombie-Prozess durch die zweite Zeile der Ausgabe sehen.

Der Befehl ps zeigt nun auch diesen nicht mehr existierenden Prozess und das dafür verantwortliche Zombie-Programm an:

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

 Ergebnis des Befehls

Dieser Befehl gibt Ihnen den Status, ParentId, die Prozess-ID, das Programm, das den Zombie-Prozess ausführt (das Zombie-Programm, das wir in diesem Tutorial ausgeführt haben).

Sie haben nun gelernt, wie Sie einen einfachen Dummy-Zombie-Prozess erstellen. Dies gibt Ihnen eine Vorstellung davon, wie es auf Ihrem System aussieht und wie Sie es zu Testzwecken verwenden können.

So erstellen Sie einen Dummy-Zombie-Prozess in Ubuntu 18.04 LTS

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.