Ako testeri softvéru niekedy potrebujeme vedieť, ako vyzerá proces zombie v našom systéme. Môžeme na ňom spustiť rôzne testy, ak konkrétne vieme, ktoré ID programu a procesu je spojené s týmto zombie procesom.
Čo je proces zombie?
Zombie alebo zaniknutý proces v systéme Linux je proces, ktorý bol dokončený, ale jeho záznam stále zostáva v tabuľke procesov z dôvodu chýbajúcej korešpondencie medzi nadradeným a podradeným procesom. Nadradený proces zvyčajne kontroluje stav svojich podradených procesov pomocou funkcie wait (). Keď je podradený proces dokončený, funkcia čakania signalizuje rodičovi, aby proces úplne ukončil z pamäte. Ak však rodič nedokáže vyvolať funkciu čakania pre žiadne zo svojich potomkov, podradený proces zostane v systéme nažive ako mŕtvy alebo zombie proces. Tieto procesy zombie sa môžu vo vašom systéme hromadiť vo veľkom množstve a ovplyvňovať jeho výkon.
Keď spustíte horný príkaz a je spustený zombie, bude to označené druhým riadkom výstupu nasledovne:
Ak však vo vašom systéme nebeží žiadny proces zombie, môžete vytvoriť figurínu na účely testovania, ako je popísané v tomto článku. Tento proces používame v systéme Ubuntu 18.04.
Vytvorenie procesu zombie
V tejto časti napíšeme program c na spustenie procesu zombie v našom systéme.
Otvorte textový editor a zadajte nasledujúci kód:
Zákonníka
#include#include #include int main () pid_t child_pid; child_pid = vidlica (); if (child_pid> 0) sleep (60); else exit (0); návrat 0;
Uložte tento súbor ako zombie.c
Proces zombie vytvorený pomocou tohto kódu bude trvať 60 sekúnd. Čas môžete predĺžiť zadaním času (v sekundách) vo funkcii sleep ().
Otvorte terminál a spustite nasledujúci príkaz na zostavenie tohto programu:
$ cc zombie.c -o zombie
Teraz sa vytvorí spustiteľný súbor s menom zombie.
Vezmite prosím na vedomie, že budete musieť nainštalovať kompilátor GNU C, ak už nie je nainštalovaný vo vašom systéme pomocou nasledujúceho príkazu:
$ sudo apt-get install build-essential
Teraz spustite program zombie pomocou nasledujúceho príkazu:
./ zombie
Uvidíte nasledujúci výstup:
Počas testovania môžete použiť ID rodičovského procesu (PPID) a ID dieťaťa (PID); napríklad zabitím tohto zombie procesu pomocou príkazu kill.
Keď je tento proces spustený, výkon systému môžete zobraziť v inom okne terminálu pomocou horného príkazu. Cez druhý riadok výstupu budete môcť vidieť 1 proces zombie.
Príkaz ps teraz tiež zobrazí tento zaniknutý proces a zaň zodpovedný zombie program:
$ ps axo stat, ppid, pid, komunikácia | grep -w zaniknutý
Tento príkaz vám poskytne štát, ID rodiča, ID procesu, program, na ktorom je spustený proces zombie (program zombie, ktorý sme spustili v tomto výučbe).
Teraz ste sa naučili, ako vytvoriť jednoduchý fiktívny proces zombie. Získate tak predstavu o tom, ako to vyzerá vo vašom systéme a ako ho môžete použiť na testovacie účely.