Kot preizkuševalci programske opreme moramo včasih vedeti, kako zombi postopek izgleda v našem sistemu. Na njem lahko izvajamo različne teste, če natančno vemo, kateri program in ID procesa je povezan s tem zombi procesom.
Kaj je postopek zombija?
Zombi ali neaktiven proces v Linuxu je postopek, ki je bil končan, vendar njegov vnos še vedno ostaja v tabeli procesov zaradi pomanjkanja korespondence med nadrejenim in nadrejenim procesom. Ponavadi nadrejeni postopek nadzoruje stanje svojih podrejenih procesov s pomočjo funkcije wait (). Ko je podrejeni postopek končan, funkcija čakanja staršu sporoči, da popolnoma izstopi iz pomnilnika. Če pa starš ne pokliče funkcije čakanja za katerega koli od svojih otrok, ostane podrejeni proces v sistemu živ kot mrtvi ali zombi proces. Ti zombi procesi se lahko v vašem sistemu kopičijo v velikem številu in vplivajo na njegovo delovanje.
Ko zaženete zgornji ukaz in zaženete zombija, bo to prikazano v drugi vrstici izhoda, kot sledi:
Če pa se v vašem sistemu ne izvaja postopek zombija, lahko ustvarite preskusno lutko za namene testiranja, kot je opisano v tem članku. Ta postopek izvajamo na Ubuntu 18.04.
Ustvarjanje procesa zombija
V tem razdelku bomo napisali c program za zagon zombi procesa v našem sistemu.
Odprite urejevalnik besedil in vnesite naslednjo kodo:
Koda
#include#include #include int main () pid_t otrok_pid; otrok_pid = vilice (); if (otrok_pid> 0) spanje (60); else izhod (0); vrni 0;
Shranite to datoteko kot zombi.c
Zombi postopek, ustvarjen s to kodo, bo potekal 60 sekund. Čas lahko podaljšate tako, da v funkciji spanja () določite čas (v sekundah).
Odprite terminal in zaženite naslednji ukaz za prevajanje tega programa:
$ cc zombi.c -o zombi
Zdaj bo ustvarjena izvršljiva datoteka z imenom zombi.
Upoštevajte, da boste morali namestiti prevajalnik GNU C, če v vašem sistemu že ni nameščen z naslednjim ukazom:
$ sudo apt-get install build-bistvenega pomena
Zdaj zaženite program zombie z naslednjim ukazom:
./ zombi
Videli boste naslednji izhod:
Med preskušanjem lahko uporabite nadrejeni ID procesa (PPID) in podrejeni ID procesa (PID); na primer z ubijanjem tega procesa zombija z ukazom kill.
Medtem ko se ta postopek izvaja, si lahko prek zgornjega ukaza ogledate zmogljivost sistema v drugem oknu terminala. Skozi drugo vrstico izhoda boste lahko videli 1 postopek zombija.
Ukaz ps bo zdaj prikazal tudi ta neaktiven postopek in zombi program, odgovoren zanj:
$ ps axo stat, ppid, pid, comm | grep -w ne deluje
Ta ukaz vam bo dal stanje, nadrejeni ID, ID procesa, program, ki izvaja postopek zombi (zombi program, ki smo ga izvajali v tej vadnici).
Zdaj ste se naučili, kako ustvariti preprost lažni postopek zombija. To vam bo dalo predstavo o tem, kako izgleda v vašem sistemu in kako ga lahko uporabite za namene testiranja.