Som programvarutestare behöver vi ibland veta hur en zombieprocess ser ut på vårt system. Vi kan köra olika tester på den om vi specifikt vet vilket program och process-ID som är associerat med zombieprocessen.
Vad är en Zombie-process?
En zombie eller en nedlagd process i Linux är en process som har slutförts, men dess inträde kvarstår i processtabellen på grund av bristande korrespondens mellan föräldra- och barnprocesserna. Vanligtvis kontrollerar en överordnad process statusen för sina underprocesser genom att använda funktionen wait (). När barnprocessen är klar signalerar väntefunktionen föräldern att helt avsluta processen från minnet. Om föräldern misslyckas med att anropa väntefunktionen för några av sina barn, förblir barnprocessen i systemet som en död- eller zombieprocess. Dessa zombieprocesser kan ackumuleras i stort antal på ditt system och påverka dess prestanda.
När du kör det översta kommandot och en zombie körs kommer den att anges av utgångens andra rad på följande sätt:
Men om det inte finns någon zombieprocess på ditt system kan du skapa en dummy för teständamål som beskrivs i den här artikeln. Vi kör den här processen på Ubuntu 18.04.
Skapa en Zombie-process
I det här avsnittet kommer vi att skriva ett c-program för att köra en zombieprocess på vårt system.
Öppna en textredigerare och ange följande kod:
Koda
#omfatta#omfatta #omfatta int main () pid_t child_pid; child_pid = fork (); if (child_pid> 0) sleep (60); annat exit (0); returnera 0;
Spara den här filen som zombie.c
Zombieprocessen som skapas genom den här koden kommer att köras i 60 sekunder. Du kan öka tidslängden genom att ange en tid (i sekunder) i funktionen sleep ().
Öppna terminalen och kör följande kommando för att kompilera detta program:
$ cc zombie.c-o zombie
Nu skapas en körbar fil med namnet zombie.
Observera att du måste installera GNU C-kompilatorn om den inte redan är installerad på ditt system med följande kommando:
$ sudo apt-get install build-essential
Kör nu zombieprogrammet genom följande kommando:
./ zombie
Följande utdata visas:
Du kan använda överordnat process-ID (PPID) och underordnat process-ID (PID) under testning; till exempel genom att döda denna zombieprocess genom dödkommandot.
Medan denna process körs kan du visa systemets prestanda i ett annat terminalfönster genom det översta kommandot. Du kommer att kunna se en zombieprocess genom utgångens andra rad.
PS-kommandot kommer nu också att visa denna nedlagda process och zombie-programmet som är ansvarigt för det:
$ ps axo stat, ppid, pid, comm | grep -w avstängd
Detta kommando ger dig tillståndet, parentID, process-ID, programmet som kör zombieprocessen (zombieprogrammet som vi körde i den här självstudien).
Du har nu lärt dig hur man skapar en enkel dummy-zombie-process. Detta ger dig en uppfattning om hur det ser ut på ditt system och hur du kan använda det för teständamål.