Būdami programinės įrangos testuotojai, kartais turime žinoti, kaip zombių procesas atrodo mūsų sistemoje. Mes galime atlikti įvairius bandymus, jei tiksliai žinome, kuri programa ir proceso ID yra susieti su tuo zombių procesu.
Kas yra zombių procesas?
„Zombie“ arba neveikiantis „Linux“ procesas yra procesas, kuris buvo baigtas, tačiau jo įrašas vis tiek lieka proceso lentelėje, nes trūksta tėvų ir vaikų procesų atitikimo. Paprastai tėvų procesas tikrina savo vaiko procesų būseną per laukimo () funkciją. Baigus vaiko procesą, laukimo funkcija signalizuoja tėvus visiškai išeiti iš atminties. Tačiau jei tėvas nesugeba iškviesti nė vieno savo vaiko laukimo funkcijos, vaiko procesas sistemoje lieka gyvas kaip negyvas ar zombių procesas. Šie zombių procesai gali kauptis jūsų sistemoje ir turėti įtakos jos veikimui.
Kai paleidžiate viršutinę komandą ir veikia zombis, tai bus nurodyta antroje išvesties eilutėje taip:
Tačiau jei jūsų sistemoje nevyksta zombių procesas, galite sukurti manekeną bandymų tikslais, kaip aprašyta šiame straipsnyje. Šį procesą vykdome „Ubuntu 18“.04.
Zombių proceso sukūrimas
Šiame skyriuje parašysime c programą, kad paleistume zombių procesą mūsų sistemoje.
Atidarykite teksto rengyklę ir įveskite šį kodą:
Kodas
# įtraukti# įtraukti # įtraukti int main () pid_t child_pid; child_pid = šakutė (); if (vaikas_pid> 0) miegas (60); else exit (0); grąžinti 0;
Išsaugokite šį failą kaip zombį.c
Naudojant šį kodą sukurtas zombių procesas veiks 60 sekundžių. Laiko trukmę galite padidinti nurodydami laiką (sekundėmis) miego () funkcijoje.
Atidarykite terminalą ir paleiskite šią komandą, kad sukompiluotumėte šią programą:
$ cc zombis.c -o zombis
Dabar bus sukurtas vykdomasis failas, pavadintas zombiu.
Atminkite, kad turėsite įdiegti GNU C kompiliatorių, jei jis dar nėra įdiegtas jūsų sistemoje naudodamas šią komandą:
$ sudo apt-get install build-essential
Dabar paleiskite zombių programą naudodami šią komandą:
./ zombis
Pamatysite tokį išėjimą:
Testavimo metu galite naudoti pirminio proceso ID (PPID) ir antrinio proceso ID (PID); pavyzdžiui, nužudydamas šį zombių procesą naudodamas komandą „kill“.
Kol šis procesas vyksta, galite peržiūrėti sistemos veikimą kitame „Terminal“ lange naudodami viršutinę komandą. Antroje išvesties eilutėje galėsite pamatyti 1 zombių procesą.
Komanda ps dabar taip pat parodys šį neveikiantį procesą ir už jį atsakingą zombių programą:
$ ps axo stat, ppid, pid, comm | grep -w neveikia
Ši komanda suteiks jums būseną, parentID, proceso ID, programą, kurioje vykdomas zombių procesas (zombių programa, kurią vykdėme šioje pamokoje).
Dabar jūs išmokote sukurti paprastą manekeno zombių procesą. Tai suteiks jums idėją, kaip ji atrodo jūsų sistemoje ir kaip galite ją naudoti bandymų tikslais.