Matando los zombies que residen en tu Linux….

zombie

Los procesos son programas en ejecución. Cada software puede iniciar uno o más procesos que se tendrán que cargar en la memoria principal para su procesamiento por la CPU. En ocasiones, un proceso puede subdividirse en los llamados LWP o procesos ligeros, es decir, en hebras, hilos o threads, como los quieras llamar. Cuando todos los threads de un proceso se han ejecutado, entonces el proceso se ha finalizado.

Hecha esa introducción, decir que los procesos en los entornos Unix se identifican por un ID y pueden tener varios estados. Ese ID o identificador es un número asignado a dicho proceso para poder hacer un seguimiento. Se puede conocer fácilmente el PID de un proceso con la herramienta ps, htop, entre otras herramientas. Y también se puede apreciar información sobre su estado.

Los estados en los que puede estar un proceso en Linux son:

  • Running: el proceso está en ejecución.
  • Sleeping: el proceso está durmiendo, a la espera de que suceda un evento que lo despierte y continúe su ejecución.
  • Terminating: el proceso se ha terminado o muerto.
  • Device I/O: procesos de dispositivos de E/S que no se pueden interrumpir.
  • Zombie: cuando un proceso hijo termina antes que su proceso padre se mantiene la información del hijo hasta que le padre termina también. El hijo realmente está muerto o terminado, pero no puede ser destruido para liberar recursos. Realmente no ocupa tiempo de CPU, pero si espacio en la tabla de procesos.

Una forma de enviar señales a los procesos para que pasen a un estado u otro es mediante el comando kill. Si usas el comando kill -l verás la lista de señales que puedes enviar. Lo más típico es enviar una señal KILL a un proceso para eliminarlo. Por ejemplo:


kill -l

kill -9 <PID>

La señal 9 o SIGKILL directamente mata al proceso señalado por PID sin comprobar el estado. En cambio, SIGTERM terminará el proceso solo en ciertas circunstancias, ya que sí comprueba el estado del proceso al que se le envía la señal y si no es seguro se ignorará la señal.

Bien, una vez dicho todo eso, las herramientas como ps tienen una columna que muestra el STAT o estado del proceso. Si te fijas en esa columna, aparece la inicial del estados en el que se encuentra. Por ejemplo, S para sleeping, o Z para zombie, etc. Puedes comprobar si tienes o no procesos zombie en tu sistema con el siguiente comando:


ps aux | grep 'Z'

En mi caso, había uno con PID 6393. Y para eliminar los procesos zombie, puedes usar la siguiente orden:


kill 6393

Un comentario, deja el tuyo

  1.   Juan Rubio dijo

    Hola realizo este proceso para un proceso pero le doy KILL y vulvo a revisar y sigue este proceso

Deja tu comentario

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

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.