Frage Was sind Zombieprozesse?


Mit Befehlen wie top und die GUI basiert System Monitor Ich kann sehen, dass ich im Moment mehrere Zombieprozesse habe.

Was sind Zombieprozesse?

Beeinflussen sie die Leistung des Systems oder der Anwendung, zu der sie gehören? Verwenden sie zu viel Speicher oder überhaupt Speicher?


127
2018-06-13 22:27


Ursprung


Sie sind Prozesse, die Ihre CPU essen wollen;) - Luis Alvarado♦
zum Mittagessen... :) - RolandiXor♦
Diese Prozesse sind tot, aber nicht begraben. - Prateek Joshi
Iss meine CPU ?! Das ist wirklich beängstigend! - Håvard Geithus


Antworten:


Zombies sind DEAD-Prozesse. Sie können nicht "töten" (Du kannst den DEAD nicht töten). Alle Prozesse sterben schließlich, und wenn sie es tun, werden sie zu Zombies. Sie verbrauchen fast keine Ressourcen, was zu erwarten ist, weil sie tot sind! Der Grund für Zombies ist, dass der Elternteil (Prozess) des Zombies den Status des Exits und die Ressourcennutzung des Zombies abrufen kann. Der Elternteil signalisiert dem Betriebssystem, dass er den Zombie nicht mehr benötigt, indem er einen der wait () - Systemaufrufe verwendet.

Wenn ein Prozess stirbt, werden alle untergeordneten Prozesse alle zu untergeordneten Elementen mit Prozessnummer 1, was der Init-Prozess ist. Init wartet immer darauf, dass Kinder sterben, damit sie nicht als Zombies bleiben.

Wenn Sie Zombieprozesse haben, bedeutet das, dass diese Zombies nicht von ihren Eltern gewartet wurden (sehen Sie sich PPID an, die von angezeigt wird) ps -l). Sie haben drei Möglichkeiten: Fixieren Sie den übergeordneten Prozess (warten Sie); töte den Elternteil; oder lebe damit. Denken Sie daran, dass das Leben damit nicht so schwer ist, weil Zombies wenig mehr als eine zusätzliche Zeile in der Ausgabe von ps aufnehmen.

Zombies können in der Ausgabe des Befehls Unix ps durch das Vorhandensein eines "Z" in der Spalte STAT identifiziert werden. Zombies, die länger als eine kurze Zeit existieren, weisen normalerweise auf einen Fehler im übergeordneten Programm hin. Wie bei anderen Lecks ist das Vorhandensein von ein paar Zombies an sich nicht besorgniserregend, kann jedoch auf ein Problem hinweisen, das unter schwereren Lasten ernsthaft werden könnte.

Um Zombies aus einem System zu entfernen, kann das SIGCHLD-Signal mit dem Befehl kill manuell an das übergeordnete System gesendet werden. Wenn der Elternprozess immer noch nicht bereit ist, den Zombie zu ernten, wäre der nächste Schritt, den Elternprozess zu entfernen. Wenn ein Prozess seinen Elternknoten verliert, wird init zum neuen Elternknoten. Init führt regelmäßig den Systemaufruf wait aus, um Zombies mit init als Eltern zu ernten.

Es gibt auch verwaiste Prozesse Dies ist ein Computerprozess, dessen Elternprozess beendet oder beendet wurde.

Ein Prozess kann während des Remoteaufrufs verwaist werden, wenn der Clientprozess abstürzt, nachdem er eine Anforderung an den Server gestellt hat.

Waisen verschwenden Serverressourcen und können möglicherweise einen Server in Schwierigkeiten bringen (Dies ist der größte Ressourcenunterschied zwischen Zombies und Waisen) (außer wenn Sie einen Orphan-Zombie-Film sehen). Es gibt jedoch mehrere Lösungen für das Waisenprozess-Problem:

  1. Ausrottung ist die am häufigsten verwendete Technik; In diesem Fall wird der verwaiste Prozess beendet.

  2. Reinkarnation ist eine Technik, bei der Maschinen periodisch versuchen, die Eltern von irgendwelchen Fernberechnungen zu lokalisieren; an diesem Punkt werden verwaiste Prozesse getötet.

  3. Ablauf ist eine Technik, bei der jedem Prozess eine bestimmte Zeit zugewiesen wird, bevor er getötet wird. Bei Bedarf kann ein Prozess "nachfragen", bis die zugewiesene Zeit abgelaufen ist.

Ein Prozess kann auch verwaist sein und auf derselben Maschine laufen wie sein Elternprozess. In einem UNIX-ähnlichen Betriebssystem wird jeder verwaiste Prozess sofort vom speziellen "init" -Systemprozess übernommen. Diese Operation wird als erneute Ersetzung bezeichnet und erfolgt automatisch. Obwohl der Prozess technisch den Prozess "init" als übergeordnetes Element hat, wird er immer noch als verwaistes Verfahren bezeichnet, da der Prozess, der ihn ursprünglich erstellt hat, nicht mehr existiert.

Mehr Info:

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

Wie kann man hängende Prozesse identifizieren und beenden, wenn das System hängt und langsam auf Benutzereingaben reagiert?

Einen laufenden Prozess in einem Ubuntu-Rechner von einem Windows-Rechner im LAN aus beenden


151
2018-06-13 22:39



Ekhm! Du kannst die Toten töten! Du musst nur auf den Kopf zielen. Oder haben sie uns die ganze Zeit belogen? - Marcin Kaminski
init Anrufe wait auf all seinen kindlichen Prozessen sei es Zombie, verwaist (adoptiert) und biologisch (selbstgeboren)? - Bleeding Fingers
gem. zum Zweiten Weltkrieg Tarnung verwenden: P - عثمان غني
Bitte geben Sie eine Medaille an @MarinKaminski! - Andrea Romagnoli


Zombie Prozesse (zeigen auch als <defunct>), sind keine wirklichen Prozesse überhaupt. Sie sind nur Einträge in der Kernel-Prozesstabelle. Dies ist die einzige Ressource, die sie verbrauchen. Sie verbrauchen keine CPU oder RAM. Die einzige Gefahr, Zombies zu haben, ist der Platz in der Prozesstabelle (Sie können verwenden cat /proc/sys/kernel/threads-max um zu sehen, wie viele Einträge auf Ihrem System erlaubt sind).

Sie erscheinen nur, wenn ihr Elternprozess (d. H. Prozess, welcher fork()'ed sie) lebt, hat aber noch nicht angerufen wait() Systemfunktion. Sobald Eltern sterben, sind die Zombies wait()'ed für durch init und verschwinden.


20
2018-06-14 09:36



Das top `screenshot in diese Frage scheint dir zu widersprechen? Dort scheint der Zombie 100% von 1 CPU zu verwenden, aber keinen Speicher. - Torben Gundtofte-Bruun


Wenn ein child process endet, sein Tod wird seinem Elternteil mitgeteilt, damit der Elternteil geeignete Maßnahmen ergreifen kann.

EIN process das ist Warten darauf, dass das übergeordnete Element den Rückgabecode akzeptiert heißt a Zombie-Prozess.

Sie haben completed their execution aber hat immer noch ein entry in dem process table.


6
2017-10-14 16:11