Diskussion:Zombie-Prozess
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)