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:
-
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 ZA kimenet kb. így fog kinézni:
Z 1234 5678, ahol1234a zombie folyamat PID-je,5678pedig a szülő folyamat PPID-je. -
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álSIGTERMnem 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.