Diskussion:Zombie-Prozess

aus Wikipedia, der freien Enzyklopädie

Zombies als Computer

hierher verschoben von der Seite Zombie

==Zombies als Computer==
Ein Computer Zombie ist eine Maschine, welches Prozesse ausführt die fremdgesteuert werden.

Meistens Erlangen Fremde die Kontrolle über den PC via Viren, Trojaner, Exploits oder anderen Hacker-Tools und verwenden den so gekidnapten Rechner zu ihren eigenen Zwecken. Die Rechner werden dann oft als Basis für weitere Hackattaken, zur Virenverbreitung oder Verschicken von Spammails verwendet.

Zombie Prozesse sind laufende Programme die nichtmehr auf Kommandos vom User reagieren. Es sind meistens "verwaiste" Unterprozesse bei welchen der Hauptprozess nichtmehr läuft und welche nur schwer zu beenden sind.

Das mag einarbeiten wer will!--Diebu 10:59, 9 November 2005 (CET)

Zombies dieser Art sind unter Zombie (Internet) beschrieben. – 91.4.35.123 02:17, 17. Dez. 2007 (CET)

Pointer

Zombies gibt es auch bei Datenstrukturen, wenn da noch was rumspukt, auf das kein Pointer mehr zeigt. – Simplicius 14:08, 29. Okt. 2008 (CET)

Codebeispiel

Soweit ich das sehe, wird die untere for-Schlaufe im Codebeispiel falsch initialisiert (mit 0 statt mit 10). -- 129.132.3.179 16:09, 13. Jun. 2011 (CEST)

SIGKILL auf Linux

Im Artikel wird derzeit behauptet, SIGKILL könnte benutzt werden, um Zombies aufzuräumen. Unter Linux funktioniert das definitiv nicht (hatte ich auch so in Erinnerung und eben noch mal getestet. Man müsste das Signal schon an den Parent schicken, damit der Zombie an init übergeht und von diesem freigegeben wird.

Test: Anhand von Franklin52's Anleitung aus diesem Thread habe ich einen Zombie erzeugt, dieser wird in ps dann als <defunct> angezeigt, dann kill -9 auf die PID, und es passiert (tada): nichts. Der Zombie ist immer noch da. Das ist auch logisch, weil der Zombie eigentlich eine Ressource ist, die vom Parentprozess belegt wird. Solange der Parent noch lebt und sie nicht freigibt, bleibt sie auch in Benutzung. Ich meine mich zu entsinnen, dass das andere unixoide Systeme das ähnlich regeln. Aragorn2 (Diskussion) 12:57, 12. Jun. 2015 (CEST)

ACK. Ist entfernt. --David Seppi (Diskussion) 16:10, 4. Aug. 2015 (CEST)

Einleitung - weiss gar nicht wo anfangen ...

"Ein Zombie-Prozess ist vor allem in unixoiden Betriebssystemen ein Prozess, der beendet ist, aber trotzdem noch in der Prozesstabelle auftaucht und geringfügig Systemressourcen belegt. Ein Zombie richtet selbst keinen Schaden an, kann aber auf einen Fehler hinweisen."

Obige Definition erinnert stark an den Bumerang, der keiner war, weil er nicht zurückgekommen ist. Ein Zombie ist eben kein Prozess_(Informatik), da nichts mehr ausgeführt wird. Der dazugehörige Prozess wurde beendet und gebundene Ressourcen freigegeben. Vielmehr handelt es sich um einen Eintrag in der Prozesstabelle (mithin die einzige Systemressource, die von einem Zombie belegt wird), der dort verbleibt, damit damit der Elternprozess dessen Exitstatus abfragen kann. Selbstverständlich richtet ein Zombie keinen Schaden an (wie auch - der tut ja nichts mehr); auf keinen Fall weist er selbst auf einen Fehler hin - gemeint ist wohl, dass ein längeres Verbleiben von Zombieeinträgen in der Processtabelle auf einen möglichen Fehler im Ablauf des erzeugenden Programms hinweisen kann.


Formulierungsvorschlag: "Als Zombie-Prozess wird bei unixähnlichen Betriebssystemen der in der Prozesstabelle verbleibende Eintrag eines bereits beendeten Prozess_(Informatik) bezeichnet. Durch die Statusabfrage des Elternprozesses wird dieser Eintrag gelöscht und bleibt in der Regel nur für kurze Zeit sichtbar. Verschwinden Zombies über längere Zeit nicht aus der Prozesstabelle, weist dies auf ein fehlerhaftes Verhalten des jeweiligen Elternprozesses hin." Gruß, --Burkhard (Diskussion) 14:53, 1. Mai 2018 (CEST)

Automatisiertes Löschen

Das killen eines Eltern-Prozesses wie im Beispiel kill -CHLD <PID des Vaterprozesses> funktioniert unter Linux nicht. Hier müsste es kill -s SIGCHLD <PID des Vaterprozesses> heißen. Wenn es Unixoide Systeme gibt, die die bisherige Befehlsform verwenden sollte wir es denke ich als Variante einfügen. --RubLau (Diskussion) 17:23, 17. Dez. 2018 (CET)

Was bedeutet "funktioniert unter Linux nicht"? SLES12:
xxx@yyyy:~> cat /etc/os-release
NAME="SLES"
VERSION="12"
VERSION_ID="12"
PRETTY_NAME="SUSE Linux Enterprise Server 12"
ID="sles"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:suse:sles:12"
xxx@yyyy:~> kill -CHL 7932
-bash: kill: CHL: invalid signal specification
xxx@yyyy:~> kill -CHILD 7932
-bash: kill: CHILD: invalid signal specification
xxx@yyyy:~> kill -CHLD 7932
xxx@yyyy:~> which kill
/usr/bin/kill
xxx@yyyy:~> /usr/bin/kill -L
 1 HUP      2 INT      3 QUIT     4 ILL      5 TRAP     6 ABRT     6 IOT      7 BUS      8 FPE      9 KILL    10 USR1
11 SEGV    12 USR2    13 PIPE    14 ALRM    15 TERM    16 STKFLT  17 CHLD    17 CLD     18 CONT    19 STOP    20 TSTP
21 TTIN    22 TTOU    23 URG     24 XCPU    25 XFSZ    26 VTALRM  27 PROF    28 WINCH   29 IO      29 POLL    30 PWR
31 UNUSED  31 SYS     34 RTMIN   64 RTMAX
Gleiches Verhalten unter openSUSE Leap 15.0 --AchimP (Diskussion) 01:02, 18. Dez. 2018 (CET)