proceso-zombie-01

De vez en cuando un proceso de GNU/Linux se pierde y no hace nada, ni siquiera interfiere en los ciclos de la CPU. Aunque los zombis no utilizan recursos valiosos (como una aplicación en funcionamiento y maliciosa), puede suponer una amenaza. ¿Cómo? Cuando un proceso se convierte en zombie, conserva su ID de proceso (PID). Dado que los sistemas GNU/Linux tienen un número finito de PIDs (aunque ese número es bastante alto), en caso de que se muchos procesos se vuelvan zombies no habrían suficientes PIDs y ningún otro proceso podría iniciarse. No te preocupes, esto es una teoría porque en realidad que ocurriese esto sería rarísimo.

Las posibilidades de que eso ocurra son muy pocas. Sin embargo, lo que es más importante, los procesos zombies indican que algo ha ido mal con una aplicación, y puede haber un error en un programa en particular. Los errores en el software del centro de datos no deben ser tolerados y deben ser corregidos. Hasta que se resuelva el problema, es posible que quieras comprobar y eliminar los procesos zombis.

Así que cuando un proceso se convierte en zombie, ¿qué hacemos? Encuentra y mata esos procesos. Déjame mostrarte cómo.

Encontrar un zombie

Lo primero que hay que hacer es encontrar el proceso zombie. Afortunadamente, esto es muy fácil, gracias al comando ps. Veremos la salida del comando ps a través de grep para listar cualquier proceso cuyo STAT sea Z (de zombie). Abre una ventana de terminal y emite el siguiente comando:

ps aux | grep 'Z'

La salida del comando de arriba listará cualquier proceso que incluya Z en la salida (Figura 1).

proceso-zombie-02

Como puedes ver, no hay ningún proceso en ejecución que tenga un estado zombie. Este comando también listará cualquier proceso que incluya la letra Z en la salida, por lo que deberás ignorar cualquier cosa que no tenga una Z en la columna STAT.

Sin embargo, abajo presento una imagen con procesos zombie:

proceso-zombie-03

Matar a un zombie

En lugar de decapitar, quemar o desmembrar completamente al zombi, queremos usar el comando de matar para acabar con esos procesos zombis. La salida del primer comando incluirá el PID de todos los procesos zombis, así que para matar a uno de ellos, debes emitir el comando:

kill PID

Donde PID es el ID de proceso del proceso en cuestión. Así que si quieres matar el proceso zombie evolution (con PID de ejemplo 19990), el comando sería:

kill 19990

Y eso es todo.

Podrías ser astuto y improvisar un guión de bash para encargarse de esto automáticamente, sin embargo, correrías el riesgo de matar un proceso necesario. Debido a ese riesgo, siempre recomiendo encargarse de esta tarea manualmente. Esto es especialmente cierto, considerando que estamos trabajando con un servidor de centro de datos a nivel de producción (aunque lo demostré en una máquina de escritorio).

Si encuentras servicios y aplicaciones que se te caen, deberías comprobar si hay procesos zombis y deshacerte de ellos. Una vez que sepas qué procesos están siendo zombies, presente un informe de fallo o ponte en contacto con el desarrollador y háselo saber (especialmente si esto se convierte en una ocurrencia regular para una aplicación).

 

Fuente: maslinux

¿Quién está en línea?

Hay 46554 invitados y ningún miembro en línea