[redhat-list-de] Wie kille ich Prozesse mit Status "defunct"

Martin Schmiderer m.schmiderer at science-computing.de
Wed Mar 2 16:27:35 UTC 2005


Hallo,

On Wed, Mar 02, 2005 at 04:21:39PM +0100, Werner Modenbach wrote:
> Hallö Jörg,
...
> es sieht so aus, als würde der Vaterprozeß einfach nicht mitbekommen, daß der 
> Kindprozeß sich beendet. Das passiert bei vielen anderen Programmen auch und 
> läßt eher auf eine marode Kernelinstallation schließen (?). 
> Daß dann viele Prozesse rumhängen stört ja nicht mal so. Es gibt aber 
> Programme, die sich selbst in der Zahl der Kindprozesse beschränken. Wohl 
> ursprünglich in der Absicht, die Systembelastung nicht zu hoch zu treiben.
> Diese Prozesse arbeiten dann sehr schnell einfach nicht mehr weiter :(
> 
> - Werner -

Also ein Zombie entsteht dadurch das sich ein kind-prozess (fork())
verabschiedet ohne das der eltern-prozess einen wait() erzeugt hat.
Dadurch kann der kind-prozess nicht aus der Prozessliste genommen
werden, weil die ppid (parent-prozess-id) noch auf die pid des
kind-prozesses zeigt. Wenn der eltern-prozess beendet wird, erbt init
den kind-prozess (nun als Zombie). Init selbst erkennt in der inittab
das dieser Prozess nicht neu gestartet werden muss (respawn), und erzeugt nun einen
wait()... da es den prozess aber nicht mehr gibt, kann er sich auch
nicht mehr beenden. Die Zombies verschwinden also erst wenn init
stirbt... (Init erkennt einen Zombie, und versucht den Kernel dazu zu
veranlassen ihn aus der Prozesstabelle zu entfernen, wenn das nicht
klappt bleibt er bis zum tod von init (reboot) bestehen.)

Das ganze ist eher ein Problem im betroffenen Proggi, als im Kernel...

Tja, wenn Prozesse nicht mehr fork()en koennen, weil es schon so viele
Zombies gibt, dann kannst Du den Prozess killen, und ihn neu
starten... damit bekommt er eine neue pid und kann wieder kinder
produzieren.

Bis sich Zombies auf die Systemlast auswirken, muessen es schon viele
sein... ich denke mal so 500 - 1000 (?)


Gruss,

Martin

-- 
 ________________________________creating IT solutions
 Martin Schmiderer               science + computing ag
 IT-Services                     Hagellocher Weg 71-75
 phone +49 7071 9457 225         72070 Tuebingen, Germany
 fax   +49 7071 9457 211         www.science-computing.de





More information about the redhat-list-de mailing list