Mi?rcoles, 18 de enero de 2012

En sistemas operativos Unix un proceso zombie es un proceso que ha completado su ejecución pero aún tiene una entrada en la tabla de procesos. Esto se debe a que dicho proceso (proceso hijo) no recibió una señal por parte del proceso de nivel superior (proceso padre) que lo creó informándole que su vida útil ha terminado. Se pueden deber a errores de programación, a situaciones no contempladas por el programador y generalmente provocan lentitud y/o inestabilidad en el Sistema.

Los principales estados en los que pueden encontrarse los procesos en Unix son los siguientes:

running (R) : Procesos que están en ejecución.

sleeping (S) : Procesos que están esperando su turno para ejecutarse.

stopped (D) : Procesos que esperan a que se finalice alguna operación de Entrada/Salida.

zombie (Z) : Procesos que han terminado pero que siguen apareciendo en la tabla de procesos.

 

Comprobando los procesos en el sistema

Tecleando el comando  top  desde una terminal se nos mostrarán todos estos procesos.

top : este comando monitoriza dinámicamente los procesos del sistema mostrando su estado, uso de CPU, cantidad de memoria, tiempo desde su inicio, nombre, etc.


top

Listando los procesos zombie

El comando anterior nos muestra los procesos, indicándonos el nº de ellos que se encuentran en cada estado, lo cual nos sirve para saber si existe algún proceso zombie pero no nos dice cual/es son. La manera de identificarlos es listando los procesos del sistema con el comando ps (process status) buscando los que tienen estado Z (descriptor de este tipo de procesos), para ello nos vamos a una terminal y tecleamos

ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'


Breve explicación de la instrucción:

ps -A   solicitamos un listado de todos los procesos mostrando el  ostat (estado),   ppid (nº proceso padre),  pid (nº proceso),  cmd (comando que lanzó el proceso)  y mediante un pipe (| tubería) hacemos un filtrado grep -e  de los procesos  Zz (zombi)

(si no existe ningún proceso zombie no mostrará nada)


¿Cómo eliminamos los procesos zombie?

Para eliminar los procesos zombie de la tabla de procesos podemos reiniciar el equipo, o bien “matar (kill)” el proceso.

Este tipo de procesos NO responde a las ordenes kill habituales como:

kill  PID_del_proceso

killall CMD_del_proceso

pkill  Nombre_del_proceso

kill -15  PID_del_proceso (solicitar al proceso que termine, a igual que  kill -TERM  PID_del_proceso)


podríamos tratar de obligarlo a terminar por la fuerza con  kill -9  PID_del_proceso  (al igual que  kill -KILL  PID_del Proceso), pero como su proceso padre no está activo no nos va a funcionar. Debemos entonces matar el P[arent]PID al que está asociado.

Para eliminar el proceso zombie nos vamos a una terminal y ejecutamos la siguiente instrucción

kill -HUP PPID_del_proceso


o bien ejecutamos la siguiente instrucción (la cual “mata” todos los procesos Zombie que hubiera)

kill -HUP `ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}'`


Breve explicación de la instrucción:

ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'     Solicita un listado con filtro sobre los procesos [Zz]ombie.

awk '{print $2}'     Filtra por la columna 2 del listado anterior. Corresponde al ParentPID (PPID).

kill -HUP         HUP (Hang UP) Obliga al proceso a reiniciarse examinando sus archivos de configuración.

 

Más información sobre el comando kill en  comptechdoc.org


Tags: Unix, Linux, Ubuntu, Procesos Zombie

Publicado por Greiscool @ 1:55  | Linux
Comentarios (4)  | Enviar
Comentarios
- Eres libre de dejar un comentario, pero solo será publicado si eres respetuoso.
- Si deseas hacer una consulta expón con claridad e indica tu "nick" para que pueda dirigirme a tí en la respuesta.
- No indiques tu e-mail en el comentario: miarroba no permite la edición de comentarios así que por tu seguridad no serán publicados comentarios en los que aparezca el e-mail.
- Si deseas contactar por e-mail puedes escribirme a libertadtux[arroba]gmail[punto]com
Publicado por Invitado
Jueves, 06 de junio de 2013 | 22:27

Muchas gracias, un articulo tecnico, conciso y bastante claro para gente que inicia en el uso de linux.

Se aprecia el tiempo y la paciencia para esto.

Publicado por Invitado
Martes, 09 de julio de 2013 | 15:09

La explicación desgranada de la instrucción es una de las cosas más de agradecer que he visto ultimamente en los foros que he visitado. Muchas gracias. Es la única manera en que los que estamos aprendiendo hagamos algo mas que copiar y pegar las soluciones de otros.

Felicidades por el articulo completo, clarísimo y perfectamente explicado.

Publicado por Joaquin_alb
Lunes, 23 de junio de 2014 | 16:42

Uf... ¡al fin alguien que EXPLICA que quiere decir la linea del comando...

De verdad, gracias, por tener en cuenta que no todos los que usamos un ordenador

e intentamos aprender un poquito, somos informaticos... :-)

Publicado por Invitado
Viernes, 22 de mayo de 2015 | 23:21

Acabo de aprender el significado de "proceso zombie" y entender la sintaxis de esos dos comandos.

Muchas gracias.

 
Licencia Creative Commons
Libertad TUX
por Rober (Greiscool) se encuentra bajo una Licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 3.0 España