Sobes.tech
Junior — Middle

Hogyan lehet befejezni vagy kényszeríteni egy zombie folyamatot az operációs rendszerben?

sobes.tech MI

Válasz az MI-től

Zombi folyamat egy olyan folyamat, amely befejeződött, de szülőfolyamat még nem olvasta a befejezési státuszát (nem hívta meg a wait-et). A rendszerben a folyamatok táblájában foglal helyet, de nem használ CPU erőforrásokat.

Közvetlenül nem lehet kényszeríteni egy zombi folyamat befejezését, mivel már befejeződött. A zombitól való megszabaduláshoz:

  • Befejezni vagy újraindítani a szülő folyamatot, amely nem hívta meg a wait-et. Ebben az esetben az init (PID 1) az új szülő lesz a zombinak, és automatikusan meghívja a wait-et, így eltávolítva azt.
  • Küldj SIGCHLD jelet a szülő folyamatnak, hogy kezelje a gyermek folyamatok befejezési státuszát.

Példa parancs a jel küldésére a szülőnek:

kill -s SIGCHLD <szülő PID>

Ha a szülő nem reagál, akkor le lehet állítani:

kill -9 <szülő PID>

Ezt követően az init átveszi és eltávolítja a zombit.