Vraag Wat zijn zombie-processen?


Met opdrachten zoals top en de gui gebaseerd System Monitor Ik kan zien dat ik op dit moment verschillende zombie-processen heb.

Wat zijn zombie-processen?

Hebben ze invloed op de prestaties van het systeem of de toepassing waar ze zombie voor zijn. Gebruiken ze te veel geheugen of geheugen?


127
2018-06-13 22:27


oorsprong


Het zijn processen die je CPU willen opeten;) - Luis Alvarado♦
voor lunch... :) - RolandiXor♦
Deze processen zijn dood maar niet begraven. - Prateek Joshi
Eet mijn CPU ?! Dat is eigenlijk angstaanjagend! - Håvard Geithus


antwoorden:


Zombies zijn DEAD-processen. Ze kunnen niet worden 'vermoord' (je kunt de DEAD niet doden). Alle processen sterven uiteindelijk en als ze dat doen, worden ze zombies. Ze verbruiken bijna geen middelen, wat te verwachten is omdat ze dood zijn! De reden voor zombies is dat de ouder (het proces) van de zombie de exitstatus en gebruiksstatistieken van de zombie kan ophalen. De ouder geeft het besturingssysteem aan dat het de zombie niet langer nodig heeft door een van de wait () systeemaanroepen te gebruiken.

Wanneer een proces sterft, worden de onderliggende processen allemaal kinderen van proces nummer 1, wat het init-proces is. Init is `` altijd '' wachtend op de dood van kinderen, zodat ze niet als zombies blijven.

Als je zombie-processen hebt, betekent dit dat die zombies niet zijn gewacht door hun ouder (kijk naar PPID weergegeven door ps -l). Je hebt drie keuzes: herstel het bovenliggende proces (laat het wachten); dood de ouder; of ermee leven. Onthoud dat leven ermee niet zo moeilijk is, omdat zombies niet meer dan één extra regel in de uitvoer van ps opnemen.

Zombies kunnen worden geïdentificeerd in de uitvoer van de opdracht Unix ps door de aanwezigheid van een "Z" in de kolom STAT. Zombies die langer dan een korte tijd bestaan, duiden meestal op een fout in het bovenliggende programma. Net als bij andere lekken, is de aanwezigheid van een paar zombies op zichzelf niet zorgelijk, maar kan een probleem aangeven dat bij zware belasting ernstig zou worden.

Om zombies van een systeem te verwijderen, kan het SIGCHLD-signaal handmatig naar de ouder worden verzonden, met behulp van de opdracht kill. Als het ouderproces nog steeds weigert de zombie te oogsten, is de volgende stap het verwijderen van het bovenliggende proces. Wanneer een proces zijn ouder verliest, wordt init de nieuwe ouder. Init voert periodiek de aanroep van het wachtsysteem uit om zombies met init als ouder te oogsten.

Er zijn ook verweesde processen die een computerproces zijn waarvan het bovenliggende proces is voltooid of beëindigd.

Een proces kan verweesd raken tijdens remote invocation wanneer het clientproces crasht nadat een verzoek van de server is gedaan.

Weeskinderen verspillen serverbronnen en kunnen mogelijk een server in de problemen brengen (dit is het grootste bronverschil tussen zombies en wezen (behalve als je een of andere zombie-film ziet). Er zijn echter verschillende oplossingen voor het probleem van het verweesde proces:

  1. Uitroeiing is de meest gebruikte techniek; in dit geval wordt het weesproces gedood.

  2. Reïncarnatie is een techniek waarbij machines periodiek proberen de ouders van externe berekeningen te lokaliseren; op welk punt verweesde processen worden gedood.

  3. Vervaldatum is een techniek waarbij aan elk proces een bepaalde hoeveelheid tijd wordt toegewezen om te eindigen voordat ze worden gedood. Indien nodig kan een proces "vragen" om meer tijd om te eindigen voordat de toegewezen tijd verloopt.

Een proces kan ook wees zijn op dezelfde machine als het bovenliggende proces. In een UNIX-achtig besturingssysteem zal elk verweesd proces onmiddellijk worden overgenomen door het speciale "init" -systeemproces. Deze handeling wordt parenterschap genoemd en gebeurt automatisch. Hoewel het proces technisch gezien het "init" -proces als zijn ouder heeft, wordt het nog steeds een weesproces genoemd, omdat het proces dat het oorspronkelijk creëerde niet meer bestaat.

Meer informatie:

http://wiki.answers.com/Q/What_is_Zombie_Process_and_Orphan_Process#ixzz1PCN9vojU

http://www.linuxsa.org.au/tips/zombies.html

http://www.brighthub.com/computing/linux/articles/79186.aspx

Hoe hangproces te identificeren en te stoppen, wanneer het systeem vastloopt en langzaam reageert op gebruikersinvoer?

Een lopend proces in een Ubuntu-machine op afstand beëindigen vanaf een Windows-machine die zich in LAN bevindt


151
2018-06-13 22:39



Ekhm! Je KUNT de doden doden! Je hoeft alleen maar naar het hoofd te streven. Of hebben ze ons de hele tijd gelogen? - Marcin Kaminski
init calls wait op al zijn kindprocessen zij het, zombie, wees (geadopteerd) en biologisch (zelfgekauwd)? - Bleeding Fingers
acc. naar World War Z gebruik camouflage: P - عثمان غني
Geef een medaille aan @MarcinKaminski! - Andrea Romagnoli


Zombie-processen (zie ook als <defunct>), zijn helemaal geen echte processen. Het zijn slechts vermeldingen in de kernel-procestabel. Dit is de enige bron die ze consumeren. Ze consumeren geen CPU of RAM. Het enige gevaar van het hebben van zombies, is te weinig ruimte in de procestabel (je kunt gebruiken cat /proc/sys/kernel/threads-max om te zien hoeveel items op uw systeem zijn toegestaan).

Ze verschijnen alleen wanneer hun bovenliggende proces (dat wil zeggen proces dat fork()'ed hen) leeft, maar nog niet gebeld wait() systeemfunctie. Zodra de ouder sterft, zijn de zombies wait()'ed voor bij init en verdwijnen.


20
2018-06-14 09:36



De top `screenshot in deze vraag lijkt u tegenspreken? Daar lijkt de zombie 100% van 1 CPU te gebruiken, maar geen geheugen. - Torben Gundtofte-Bruun


Wanneer een child process wordt beëindigd, de dood wordt gecommuniceerd aan de ouder zodat de ouder passende maatregelen kan nemen.

EEN process dat is wachten tot de ouder de retourcode accepteert wordt een a genoemd zombie proces.

Zij hebben completed their execution maar heeft nog steeds een entry in de process table.


6
2017-10-14 16:11