martes, 19 de febrero de 2019

Matar procesos zombie de GNU/Linux a lo The Walking Dead

Como SysAdmin, una de las cosas con las que tengo que lidiar diariamente es buscando procesos que estén en zombie state y lidiar con esos procesos. Este tipo de procesos tienen un tratamiento especial, y eso es lo que se va a narrar en este post.



Un proceso zombie es ese proceso que ha terminado de ejecutarse pero que aún se muestra su entrada en la lista de procesos. Es decir, que ha terminado de ejecutarse, pero si hacemos ps o top, lo seguiremos viendo ahí cuando no debería, ya que ha terminado su ejecución.

Por poner un ejemplo, podemos tener un proceso que lo que hace es obtener los datos de varios archivos correspondientes a cuentas bancarias o a las transacciones de dinero para aplicarle un impuesto determinado para calcular el valor total que generará en los distintos países. Pues bueno, una vez que genere los archivos de salida con los valores de esa transacción en los distintos países, el proceso debería terminarse, no obstante aún lo vemos.

Como para enseñar esto necesito de al menos 1 proceso en zombie state, lo crearé con el siguiente código en C++ que podéis utilizar para vuestras pruebas.





Una vez que lo tenemos, solamente tenemos que compilarlo (con g++ en mi caso) y lanzarlo. Yo lo voy a lanzar en segundo plano.


Ahí vemos ese proceso en defunct (difunto o zombie). Esto lo hemos hecho con ps -el (que muestra el estado del proceso) y buscando por los que estén en estado zombie.


Podéis pensar que con un kill -9 y el PID del proceso que esté en zombie bastaría, pero no, nos bastaría tal y como podemos observar.


También podemos visualizar estos procesos con el comando top, el cual nos muestra todos los procesos de nuestro sistema con información como la memoria usada o la contabilización de los diferentes estados de los procesos de nuestro sistema, donde podemos ver que tenemos 1 proceso en zombie state.



con el comando kill $(ps -A -ostat,ppid | awk '/[zZ]/{print $2}'} vamos a encargarnos de matar como Rick manda :P 

Lo ideal es que os hagáis un script que automatice todo esto. Yo lo tengo para facilitarme el trabajo. Ese script lo estoy modificando ahora mismo y por eso y por un problema que hoy mismo he tenido en el trabajo con un proceso en zombie state, me ha motivado a escribir sobre esto. El script, cuando lo termine de modificar, lo comentaré brevemente por aquí por el blog también para que le echéis un ojo o lo utilicéis directamente si veis que os va bien.

¿Hackeamos el Mundo?

No hay comentarios:

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...

Entrada destacada

El server me sabe a poco.

Soy un fanático del Rock y de Debian . (Creo que voy a inventar Rockbian, que suena bien y todo xD) Llevaba tiempo queriendo unir estos 2 c...