Mi a "zombi folyamat" a Linuxon?

Tartalomjegyzék:

Mi a "zombi folyamat" a Linuxon?
Mi a "zombi folyamat" a Linuxon?

Videó: Mi a "zombi folyamat" a Linuxon?

Videó: Mi a
Videó: Ransomware: Protecting Yourself from online Criminals - YouTube 2024, Április
Anonim
Ha Linux-felhasználó vagy, valószínűleg látta zombi folyamatokat, amelyek a folyamatok listáján szétszóródtak. Nem tudsz megölni egy zombi folyamatot, mert már halott - mint egy tényleges zombi.
Ha Linux-felhasználó vagy, valószínűleg látta zombi folyamatokat, amelyek a folyamatok listáján szétszóródtak. Nem tudsz megölni egy zombi folyamatot, mert már halott - mint egy tényleges zombi.

A zombik alapvetően a halott folyamatok maradék bitjei, amelyeket nem tisztítottak megfelelően. A zombi folyamatokat létrehozó program nem megfelelően van programozva - a programok nem szabad engedni a zombi folyamatoknak.

Mi a zombi folyamat?

Ahhoz, hogy megértsük, mi a zombi folyamat, és mi okozza a zombi folyamatok megjelenését, meg kell értened egy kicsit arról, hogy a folyamatok hogyan működnek a Linuxon.

Ha egy folyamat Linuxon hal meg, akkor a memória nem azonnal távolítja el a memóriából - folyamatleírója a memóriában marad (a folyamatleíró csak csak kis mennyiségű memóriát vesz igénybe). A folyamat státusza EXIT_ZOMBIE lesz, és a folyamat szülője értesül arról, hogy gyermekprocessje meghalt a SIGCHLD jelzéssel. A szülőfolyamatnak végre meg kell valósítania a wait () rendszerhívást, hogy elolvassa a halott folyamat kilépési állapotát és egyéb adatait. Ez lehetővé teszi, hogy a szülői folyamat megkapja az adatokat a halott folyamattól. Várakozás után () hívják, a zombi folyamat teljesen eltávolodik a memóriából.

Ez rendszerint nagyon gyorsan megtörténik, így nem fognak látni zombi folyamatokat felhalmozódva a rendszereden. Ha azonban a szülőfolyamat nem megfelelően van beprogramozva, és soha nem hívja meg a várást (), akkor a zombi gyermekek a memóriában maradnak, amíg megtisztítják őket.

Olyan segédprogramok, mint a GNOME System Monitor, a felső parancsot, és a ps parancsok megjelenítése zombi folyamatok.

Image
Image

A zombi folyamatok veszélyei

A zombi folyamatok nem használnak semmilyen rendszer erőforrást. (Valójában mindegyik nagyon kevés rendszermemóriát használ a folyamatleíró leírása érdekében.) Mindazonáltal minden zombi folyamat megőrzi folyamatazonosítóját (PID). A Linux rendszerek véges számú folyamatazonosítót tartalmaznak - 32767 alapértelmezés szerint 32 bites rendszereken. Ha a zombik nagyon gyorsan felgyulladnak - például ha a helytelenül programozott szerver szoftver zombi folyamatokat terhelés alatt állít fel - a rendelkezésre álló PID-ek teljes csoportját végül zombi folyamatokhoz rendelik, megakadályozva ezzel az egyéb folyamatok indítását.

Azonban néhány zombi folyamatban lógó körülmény nem jelent problémát - bár ezek a hibák a szülőfolyamattal kapcsolatosak a rendszeren.

Image
Image

Megszabadulni a zombi folyamatoktól

Nem tudsz megölni a zombi folyamatokat, mivel meg tudod ölni a normális folyamatokat a SIGKILL jelzéssel - a zombi folyamatok már halottak. Ne feledje, hogy nem kell megszabadulniuk a zombi folyamatoktól, hacsak nem nagy mennyiségű a rendszered - néhány zombik ártalmatlanok. Van azonban néhány módja, hogy megszabaduljon a zombi folyamatoktól.

Az egyik mód az, ha a SIGCHLD jelet elküldi a szülői folyamatnak. Ez a jel azt mondja a szülő folyamatnak, hogy végrehajtsa a váró () rendszerhívást és tisztítsa meg a zombi gyermekeket. Küldje a jelet a megöl parancs, helyettesítés pid az alábbi parancsban a szülőfolyamat PID-jével:

kill -s SIGCHLD pid

Ha azonban a szülőfolyamat nem megfelelően van beprogramozva, és figyelmen kívül hagyja a SIGCHLD jeleket, ez nem segít. Meg kell ölnöd vagy bezárnod a zombik szülőfolyamatát. Amikor a zombik létrehozásának folyamata véget ér, az init örökli a zombi folyamatokat és új szülővé válik. (az init az első olyan folyamat, amelyet bootoláskor indítottak Linuxon, és PID 1-re van rendelve.) init rendszeresen végrehajtja a váró () rendszerhívást a zombi gyermekek megtisztítására, így az init rövid zombi munkát végez. A szülőfolyamatot a bezárás után újraindíthatja.

Ha egy szülőfolyamat továbbra is zombikat hoz létre, azt úgy kell rögzíteni, hogy megfelelően felhívja a wait () -ot arra, hogy elnyerje a zombi gyermekét. Fájljon be egy hibajelentést, ha egy rendszeren lévő program továbbra is zombik létrehozását teszi.

Ajánlott: