Szoftvertesztelőként néha tudnunk kell, hogy néz ki egy zombi folyamat a rendszerünkön. Különböző teszteket futtathatunk rajta, ha pontosan tudjuk, hogy melyik program és folyamat azonosítója van társítva az adott zombi folyamathoz.
Mi a zombi folyamat?
A zombi vagy a Linuxban egy megszűnt folyamat egy folyamat, amely befejeződött, de a bejegyzése továbbra is a folyamat táblában marad, mivel a szülő és a gyermek közötti megfelelés hiányzik. Általában a szülői folyamat a wait () függvényen keresztül ellenőrzi gyermekfolyamatainak állapotát. Amikor a gyermek folyamat befejeződött, a várakozás funkció jelzi a szülőnek, hogy teljesen hagyja ki a folyamatot a memóriából. Ha azonban a szülő nem hívja meg a várakozási funkciót egyik gyermeke számára sem, akkor a gyermekfolyamat halott vagy zombi folyamatként életben marad a rendszerben. Ezek a zombi folyamatok nagy számban felhalmozódhatnak a rendszeren, és befolyásolhatják annak teljesítményét.
Amikor a legfelső parancsot futtatja, és egy zombi fut, akkor azt a kimenet második sora jelzi az alábbiak szerint:
Ha azonban a rendszerén nem fut zombi folyamat, létrehozhat egy próbabábut tesztelési célokra, a cikkben leírtak szerint. Ezt a folyamatot futtatjuk az Ubuntu 18-on.04.
Zombie-folyamat létrehozása
Ebben a részben írunk egy c programot egy zombi folyamat futtatására a rendszerünkön.
Nyisson meg egy szövegszerkesztőt, és írja be a következő kódot:
Kód
#include#include #include int main () pid_t child_pid; child_pid = villa (); if (gyermek_pid> 0) alvás (60); else exit (0); return 0;
Mentse el ezt a fájlt zombiként.c
Az ezzel a kóddal létrehozott zombi folyamat 60 másodpercig fog futni. Növelheti az időtartamot, ha megad egy időt (másodpercben) az alvás () funkcióban.
Nyissa meg a terminált, és futtassa a következő parancsot a program fordításához:
$ cc zombi.c -o zombi
Most egy futtatható fájl jön létre zombi néven.
Kérjük, vegye figyelembe, hogy a GNU C fordítót telepítenie kell, ha még nem telepítette a rendszerre a következő paranccsal:
$ sudo apt-get install build-essential
Most futtassa a zombi programot a következő paranccsal:
./zombi
A következő kimenetet fogja látni:
A tesztelés során használhatja a szülői folyamat azonosítóját (PPID) és a gyermek folyamat azonosítóját (PID); például e zombi folyamat megölésével a kill paranccsal.
Amíg ez a folyamat fut, megtekintheti a rendszer teljesítményét egy másik terminálablakban a felső paranccsal. A kimenet második során keresztül 1 zombi folyamatot láthat.
A ps parancs most megmutatja ezt a megszűnt folyamatot és az érte felelős zombiprogramot is:
$ ps axo stat, ppid, pid, comm | grep -w megszűnt
Ez a parancs megadja az állapotot, parentID-t, a folyamatazonosítót, a zombi folyamatot futtató programot (azt a zombi-programot, amelyet ebben az oktatóanyagban futtattunk).
Most megtanulta, hogyan lehet egyszerű dummy zombi folyamatot létrehozni. Ez képet ad arról, hogyan néz ki a rendszeren, és hogyan használhatja tesztelési célokra.