VITUX
ca testeri de software, uneori trebuie să știm cum arată un proces zombie pe sistemul nostru. Putem rula diverse teste dacă știm în mod specific ce ID de program și proces este asociat cu acel proces zombie.
ce este un proces Zombie?
un zombie sau un proces defunct în Linux este un proces care a fost finalizat, dar intrarea sa rămâne în continuare în tabelul de proces din cauza lipsei de corespondență între procesele părinte și copil. De obicei, un proces părinte păstrează o verificare a stării proceselor sale copil prin funcția wait (). Când procesul copil s-a terminat, funcția de așteptare semnalează părintelui să părăsească complet procesul din memorie. Cu toate acestea, dacă părintele nu reușește să apeleze funcția de așteptare pentru oricare dintre copiii săi, procesul copil rămâne viu în sistem ca un proces mort sau zombie. Aceste procese zombie s-ar putea acumula, în număr mare, pe sistemul dvs. și pot afecta performanța acestuia.
când executați comanda de sus și un zombie se execută, acesta va fi indicat de a doua linie de ieșire, după cum urmează:
cu toate acestea, dacă nu există niciun proces zombie care rulează pe sistemul dvs., puteți crea un manechin în scopuri de testare, așa cum este descris în acest articol. Rulăm acest proces pe Ubuntu 18.04.
crearea unui proces Zombie
în această secțiune, vom scrie un program c pentru a rula un proces zombie pe sistemul nostru.
deschideți un editor de text și introduceți următorul cod:
Cod
#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;}
salvați acest fișier ca zombie.c
procesul zombie creat prin acest cod va rula timp de 60 de secunde. Puteți mări durata de timp specificând un timp (în secunde) în funcția sleep ().
deschideți terminalul și executați următoarea comandă pentru a compila acest program:
$ cc zombie.c -o zombie
acum va fi creat un fișier executabil cu numele de zombie.
vă rugăm să rețineți că va trebui să instalați compilatorul GNU C dacă acesta nu este deja instalat pe sistemul dvs. prin următoarea comandă:
$ sudo apt-get install build-essential
acum rulați programul zombie prin următoarea comandă:
./zombie
veți vedea următoarea ieșire:
puteți utiliza ID-ul procesului părinte (PPID) și ID-ul procesului copil (PID) în timpul testării; de exemplu prin uciderea acestui proces zombie prin comanda kill.
în timp ce acest proces rulează, puteți vizualiza performanța sistemului într-o altă fereastră Terminal prin comanda de sus. Veți putea vedea 1 proces zombie prin a doua linie a ieșirii.
comanda ps va afișa acum și acest proces defunct și programul zombie responsabil pentru acesta:
$ ps axo stat,ppid,pid,comm | grep -w defunct
această comandă vă va oferi starea, parentID, ID-ul procesului, programul care rulează procesul zombie (programul zombie pe care l-am rulat în acest tutorial).
acum ați învățat cum să creați un proces simplu de zombie fals. Acest lucru vă va oferi o idee despre cum arată sistemul dvs. și cum îl puteți utiliza în scopuri de testare.