[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]

[Hilos de Discusión] [Fecha] [Tema] [Autor]

Re: [Ayuda] defunct??



On Wed, 2002-08-07 at 10:30, Cristian Othon Martinez Vera wrote:
> El mié, 07-08-2002 a las 09:58, Javier Delgado escribió:
> >
> > Que significa cuando un proceso marca "defunct"
> > 
> > Es lo que se llaman  zombies?... como se quitan?
> > 
>
>  Si, si son zombies. El estado "Z" en la 8a columna de tu salida de
> 'top' lo dice.

Esto es correcto.

>  Un proceso zombie aparece cuando muere ese proceso, pero aun tiene
> pendiente alguna interaccion con el sistema operativo (generalmente algo
> de entrada/salida), por lo cual no puede terminar completamente.

Esto es "medio" incorrecto. Un zombie es un proceso completamente
muerto, ya no ocupa ningún recurso del equipo, si se fijan en la salida
del top o del ps, tienen todo en ceros (no ocupan RAM, ni tiempo de
procesador, ya no tienen archivos abiertos, ya no hacen entrada/salida,
ni nada).

Todos los procesos regresan un exit status cuando terminan, y todos los
procesos padres tiene la responsabilidad de recibir el exit status de
sus hijos, algo así como su "certificado de muerte" :). Los procesos que
terminan pasan al estado de zombies mientras sus padres no reciban el
estado de salida con la llamada wait(). 

>  Para eliminarlos:

Los procesos zombies no ocupan recursos, por lo que no es necesario
"eliminarlos". Bueno, lo único que ocupan son unos cuantas decenas de
bytes en la tabla de procesos del kernel, pero esto no es crítico a
menos que tengas decenas de miles de procesos zombies.

Tener procesos zombies generalmente significa que el programa que los
crea es medio marranín, podrían mandarle un reporte de bug a los
desarrolladores para que lo arreglen :).

> - Receta no violenta: encuentra al proceso padre, y matalo con 'kill
> pid' o 'kill -9 pid'. En Linux es de gran ayuda para buscar al padre:


Sip, esto funciona. Cuando un proceso muere, init hereda a los hijos.
Hay un pedazo de código en init que se llama el reaper que se encarga de
esto.

> - Receta mas o menos violenta, no tan eficaz: mata cada proceso zombie
> con 'kill -9 pid'

Nop, esto nunca jala. Los zombies ya estan muertos, "rematarlos" no
sirve de nada :).

> - Receta burda: reinicia el servidor.

Hay sistemas operativos en los que el reaper de init tiene broncas. Si
un proceso zombie tiene como padre a init entonces esta es la única
solución para deshacerte de ellos. 

Pero... rebootear una máquina sólo para liberar una pocas entradas en la
tabla de procesos es completamente overkill. Es como... querer cambiarte
de casa sólo porque se mancho la mesa de la cocina.


-- 
Saluditos!
_______________________________________________
Ayuda mailing list
Ayuda en linux org mx
Para salir de la lista: http://mail.linux.org.mx/mailman/listinfo/ayuda/



[Hilos de Discusión] [Fecha] [Tema] [Autor]