proceso zombi

Terminar con un proceso zombi en Linux

Terminar o matar un proceso zombi en Linux

Los procesos en un sistema operativo son fundamentales para dotar de “vida” al hardware, o al sistema en general. En informática, un proceso es cualquier software en ejecución, es decir, un conjunto de instrucciones en funcionamiento asociados a un estado y a una porción de recursos (memoria, CPU). Sin embargo, en Linux es muy rara la vez que un proceso finalizado continúe con su ciclo de “vida”. A esta “rareza de la naturaleza” es lo que llaman un proceso zombi o zombie.

 

Un proceso defunct (difunto), o proceso zombi, en realidad es un proceso hijo cuyo proceso padre no lo finalizó. Básicamente el proceso hijo ha finalizado su ejecución, pero mantiene una entrada en la tabla de procesos. Simbólicamente hablando, el proceso hijo muere pero su “alma” sigue deámbulando en el sistema.

 

Verificación de un proceso zombi

Empleando el comando ps podemos verificar si nuestro sistema alberga algún proceso zombi. Pero antes, recordemos la identificación del estado de cada proceso que nos muestra ps -Al, en la columna Estado (S).

 

  • S- procesos suspendido (el proceso está esperando su turno para ejecutarse)
  • R- proceso en corriendo
  • D- proceso esperando a que finalice alguna operación de Entrada/Salida
  • Z- proceso zombi

 

Tengamos en cuenta la columna PPID (id del proceso padre) y PID (id del proceso – proceso hijo), porque cuando un proceso pierde a su proceso padre, el proceso mayor init se convierte en su nuevo padre (PPID 1). Cuando el proceso es adoptado por init se le llama proceso huérfano. Sin embargo, cuando esto no sucede da nacimiento a un proceso zombi.

Realmente un proceso zombi no consume memoria ni procesador, pues se trata de una entrada olvidada en la tabla de procesos. En nuestro computador personal no tenemos mucho rollo para lidiar con éste tema. Con reiniciar la máquina es suficiente. Sin embargo, si esta situación se nos presenta en un entorno productivo, y además quizá nos moleste ver esa entidad deámbulando por ahí, debemos aplicar otras medidas más profesionales que veremos en seguida.

 

En busca de procesos zombis en Linux

El comando top nos puede hacer un recuento de posibles procesos zombis.

proceso zombi

Conteo de procesos zombies con el comando top

El siguiente comando nos da información más detallada del proceso zombi.

_# ps -A -ostat,ppid,pid,cmd | grep -e ‘^[Zz]’

ó también

_# ps axo pid=,stat= | awk ‘$2~/^Z/ { print $1 }’

 

Eliminación de un proceso zombi en Linux

Si detectamos que hay un proceso zombi en nuestro sistema, tenemos tres opciones para “matarlo” (kill). Son las siguientes:

proceso zombi

 

Primera opción:

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

 

Segunda opción:

_# ps -Ao state,pid | awk ‘$1==”2″ {print $2}’ | xargs kill -s SIGKILL

 

Tercera opcion

_# ps -xaw -o state,ppid | grep Z | grep -v PID | awk ‘{ print $2 }’ | xargs kill -9

 

Cuarta opción

_# kill -9 `ps xawo state=,pid=|sed -n ‘s/Z //p’`

 

Quinta opción

_# kill -9 `ps -xaw -o state -o ppid | grep Z | grep -v PID | awk ‘{print $2}’`

 

Si las cinco opciones anteriores no surten efecto, no se extrañe, ahí es donde el proceso zombi hace honor a su nombre. Pero la última es la vencida:

 

Sexta opción:

Descargue el siguiente archivo, quítele la extensión “.txt”, asígnele permisos de ejecución y córralo como usuario root con la opción –admin.

Archivo zombi.sh.txt

 

Por ejemplo, hace poco me sucedió con el servicio de Apache web sever. Sucedía que la página de la intranet corporativa no cargaba. Procedí a verificar el estado de los procesos y de inmediato el sistema me informa de 11 procesos zombis (defunct) de Apache. Acto seguido procedí a ejecutar el programa zombi.sh y solucionado:

proceso zombi

Eliminación de procesos zombies

Causas

Las causas más general de un proceso zombi es la mala programación del software de donde procede.

Puedes leer más sobre procesos zombis, aquí

 

 

 

Comparte esto en
Publicado en GNU Linux.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *