Junior — Middle
Hoe kan een zombie-proces in het besturingssysteem worden beëindigd of geforceerd gestopt?
sobes.tech AI
Antwoord van AI
Een zombie-proces is een proces dat is beëindigd, maar waarvan het ouderproces de beëindigingsstatus nog niet heeft gelezen (geen wait heeft aangeroepen). In het systeem neemt het een invoer in de proceslijst in, maar gebruikt geen CPU-bronnen.
Het is niet mogelijk om een zombie-proces direct geforceerd te beëindigen, omdat het al is beëindigd. Om van een zombie af te komen, moet je:
- Het ouderproces beëindigen of opnieuw starten dat geen wait heeft aangeroepen. In dat geval wordt init (PID 1) de nieuwe ouder van de zombie en roept automatisch wait aan, waardoor deze wordt verwijderd.
- Het SIGCHLD-signaal naar het ouderproces sturen zodat het de beëindigingsstatus van de kindprocessen verwerkt.
Voorbeeld van een commando om het signaal naar de ouder te sturen:
kill -s SIGCHLD <PID_van_ouder>
Als de ouder niet reageert, kan je hem beëindigen:
kill -9 <PID_van_ouder>
Hierdoor pakt init de zombie op en verwijdert deze.