Sobes.tech
Middle

Hogyan zárjuk be egy zombie folyamatot?

sobes.tech MI

Válasz az MI-től

Egy zombie folyamat olyan folyamat, amely befejezte végrehajtását, de továbbra is helyet foglal a rendszer folyamat táblájában, mivel a szülő folyamat még nem olvasta ki a visszatérési kódot a wait() rendszerhívás segítségével.

A zombie folyamat megszüntetéséhez először a szülő folyamatát kell megszüntetni. Amikor a szülő folyamat befejeződik, a zombie folyamatot az init folyamat (vagy modern megfelelője, például systemd) fogadja örökbe, amely végrehajtja a szükséges wait() rendszerhívást és eltávolítja a zombit a folyamat táblából.

A zombie folyamat megszüntetésének lépései:

  1. Határozza meg a zombie folyamat PPID-jét (szülő folyamat azonosítója).

    # Zombie folyamatok és PPID-jeik keresése
    ps aux | awk '{ print $8, $2, $4 }' | grep Z
    

    A kimenet kb. így fog kinézni: Z 1234 5678, ahol 1234 a zombie folyamat PID-je, 5678 pedig a szülő folyamat PPID-je.

  2. Szüntesse meg a szülő folyamatot. Használja az előző lépésben kapott PPID-t.

    # A szülő folyamat kényszerített megszüntetése
    kill -9 <PPID_szülő_folyamat>
    

    Használja a SIGKILL (-9) jelet a szülő folyamat garantált megszüntetéséhez, ha a normál SIGTERM nem működik.

A szülő folyamat megszüntetése után a rendszer automatikusan eltávolítja a zombit. Ritka esetekben, ha a zombie folyamatok problémája mély rendszermag problémára vezethető vissza, szükség lehet a szerver újraindítására.