[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]
[Hilos de Discusión] [Fecha] [Tema] [Autor]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/