VITUX
jako testery softwaru někdy potřebujeme vědět, jak vypadá zombie proces v našem systému. Můžeme na něm spustit různé testy, pokud víme konkrétně, který program a ID procesu je spojen s tímto procesem zombie.
co je to Zombie proces?
zombie nebo zaniklý proces v Linuxu je proces, který byl dokončen,ale jeho záznam stále zůstává v procesní tabulce kvůli nedostatečné korespondenci mezi nadřazenými a podřízenými procesy. Nadřazený proces obvykle kontroluje stav svých podřízených procesů pomocí funkce wait (). Po dokončení podřízeného procesu signalizuje funkce wait rodiči úplné ukončení procesu z paměti. Pokud však rodič nezavolá funkci wait pro žádné ze svých dětí, dětský proces zůstává v systému naživu jako mrtvý nebo zombie proces. Tyto zombie procesy se mohou hromadit ve velkém počtu ve vašem systému a ovlivnit jeho výkon.
při spuštění horního příkazu a spuštění zombie bude označen druhým řádkem výstupu následovně:
pokud však ve vašem systému není spuštěn žádný zombie proces, můžete vytvořit figurínu pro účely testování, jak je popsáno v tomto článku. Tento proces spouštíme na Ubuntu 18.04.
vytvoření Zombie procesu
v této části napíšeme program c pro spuštění zombie procesu v našem systému.
otevřete textový editor a zadejte následující kód:
kód
#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;}
Uložte tento soubor jako zombie.c
zombie proces vytvořený pomocí tohoto kódu poběží po dobu 60 sekund. Dobu trvání můžete prodloužit zadáním času (v sekundách) ve funkci sleep ().
otevřete terminál a spusťte následující příkaz pro kompilaci tohoto programu:
$ cc zombie.c -o zombie
nyní bude vytvořen spustitelný soubor s názvem zombie.
Vezměte prosím na vědomí, že budete muset nainstalovat kompilátor GNU C, pokud již není nainstalován ve vašem systému pomocí následujícího příkazu:
$ sudo apt-get install build-essential
Nyní spusťte program zombie pomocí následujícího příkazu:
./zombie
zobrazí se následující výstup:
během testování můžete použít ID nadřazeného procesu (PPID) a ID podřízeného procesu (PID); například zabitím tohoto zombie procesu pomocí příkazu kill.
zatímco je tento proces spuštěn, můžete zobrazit výkon systému v jiném okně terminálu pomocí horního příkazu. Budete mít možnost vidět 1 zombie proces přes druhý řádek výstupu.
příkaz ps nyní také zobrazí tento zaniklý proces a program zombie, který je za něj zodpovědný:
$ ps axo stat,ppid,pid,comm | grep -w defunct
tento příkaz vám poskytne stav, parentID, ID procesu, program, který spouští proces zombie (program zombie, který jsme spustili v tomto tutoriálu).
nyní jste se naučili, jak vytvořit jednoduchý fiktivní zombie proces. To vám dá představu o tom, jak to vypadá na vašem systému a jak jej můžete použít pro účely testování.