Sobes.tech
Middle

Hoe beëindig je een zombie-proces?

sobes.tech AI

Antwoord van AI

Een zombie-proces is een proces dat zijn uitvoering heeft voltooid, maar nog steeds ruimte inneemt in de proceslijst van het systeem, omdat het ouderproces de retourcode nog niet heeft gelezen via de systeemaanroep wait().

Om een zombie-proces te beëindigen, moet eerst het ouderproces worden beëindigd. Wanneer het ouderproces eindigt, wordt het zombie-proces overgenomen door het init-proces (of zijn moderne equivalent, zoals systemd), dat de benodigde wait()-aanroep uitvoert en de zombie uit de proceslijst verwijdert.

Stappen om een zombie-proces te beëindigen:

  1. Bepaal de PPID (ouderproces-ID) van het zombie-proces.

    # Zoek zombie-processen en hun PPID
    ps aux | awk '{ print $8, $2, $4 }' | grep Z
    

    De uitvoer zal ongeveer zo zijn: Z 1234 5678, waarbij 1234 de PID van het zombie-proces is en 5678 de PPID van het ouderproces.

  2. Beëindig het ouderproces. Gebruik de PID van het ouderproces die in de vorige stap is verkregen.

    # Forceer het beëindigen van het ouderproces
    kill -9 <PPID_van_het_ouderproces>
    

    Gebruik het signaal SIGKILL (-9) om het ouderproces gegarandeerd te beëindigen, als het normale signaal SIGTERM niet werkt.

Na het beëindigen van het ouderproces zal het systeem automatisch het zombie-proces verwijderen. In zeldzame gevallen, als het probleem met zombie-processen wordt veroorzaakt door een diepgaand kernprobleem, kan het nodig zijn de server opnieuw op te starten.