Proceso zombi. No todo el mundo ha oído hablar de esta palabra interesante pero aterradora relacionada con el sistema operativo Linux. En una computadora personal, los procesos zombie pueden no ser una amenaza para un usuario normal, pero cuando se trata de servidores Linux, estos procesos deben identificarse y detenerse.

Dichos procesos pueden causar problemas con la tabla de procesos de su sistema y, a su vez, alterar el correcto funcionamiento de su máquina. Por lo tanto, en este artículo, analizaremos los procesos zombies en detalle, junto con una guía completa sobre cómo encontrar y eliminar procesos zombies en una máquina Linux.

¿Qué son los procesos Zombie?

Pero antes de todo eso, es importante que sepas qué son realmente los procesos zombies. Estos no son más que procesos muertos y difuntos que ocupan espacio en la tabla de procesos del sistema. A bloque de control de proceso o PCB es una estructura de datos que almacena detalles asociados con procesos individuales que se ejecutan en su sistema.

instagram viewer

La tabla de procesos consta del ID del proceso, un enlace a la PCB y otra información útil relacionada con el proceso. Los procesos Zombie tienen sus propios ID de proceso e información de administración de memoria. Dado que el sistema operativo Linux tiene un número limitado de ID de proceso disponibles, otros procesos no pueden utilizar los PID hasta que se detenga el proceso zombie.

Aunque uno o dos procesos zombies no causarán ninguna interrupción o problemas de rendimiento en su computadora, un Una gran cantidad de estos procesos puede dañar el flujo de trabajo de su sistema al inundar la tabla de procesos y el recursos.

¿Qué causa los procesos zombies en Linux?

Para comprender la causa subyacente de un proceso zombi en detalle, tendrá que aprender cómo los procesos se inician y se detienen en Linux. El sistema operativo Linux monitorea todos los procesos y demonios en ejecución en una computadora. La tabla de proceso es una lista de estructuras que contiene todos los procesos que se están ejecutando actualmente en su máquina.

Cada entrada de proceso en la tabla de procesos consta de un enlace al bloque de control de proceso de ese proceso específico. La PCB almacena los detalles asociados con ese proceso en particular. Estos detalles incluyen:

  1. Estado de proceso: El estado actual del proceso
  2. Número de proceso: Un número único que se utiliza para identificar el proceso.
  3. Contador de programa: Contiene información relacionada con la siguiente instrucción
  4. Registros: Lista de todos los registros de CPU utilizados por el proceso
  5. Abrir lista de archivos: Archivos usados ​​por el proceso
  6. Información de programación de la CPU: Contiene información asociada con el tiempo de CPU y los recursos asignados al proceso.
  7. Información de gestión de memoria: Incluye detalles sobre la cantidad de memoria utilizada por el proceso
  8. Información de E / S: Lista de dispositivos de entrada o salida utilizados por el proceso

Linux utiliza los siguientes estados de proceso para describir todos sus procesos.

  • R: Proceso en ejecución
  • S: Proceso de dormir
  • D: Proceso de reposo ininterrumpido
  • T: Proceso terminado
  • Z: Proceso zombi

Siempre que un proceso completa la tarea asignada, su estado de proceso se establece como Zombi o Z. Cada proceso tiene un proceso padre que llama a una familia de funciones denominadas Espere() que espera el cambio de estado de un proceso. Por ejemplo, si el estado del proceso cambia de Corriendo a Zombi, la Espere() se activará el método.

La Espere() El método generalmente elimina el bloque de control de proceso relacionado con ese proceso zombie y luego elimina la entrada de ese proceso de la tabla de procesos.

Pero a veces, debido al desarrollo deficiente de un programa, el proceso padre no llama al Espere() función. Y como resultado, el sistema no elimina la PCB del proceso zombie. La entrada de la tabla de procesos para ese proceso específico también permanece intacta.

Esto le otorga al proceso zombie una vida útil infinita. Dado que el sistema no puede detener el proceso, la entrada del proceso nunca se elimina y el PID nunca se libera.

Aprende más: Maneras de eliminar programas que no responden en Linux

¿Cómo encontrar procesos zombies?

El primer paso para eliminar procesos zombies en su sistema es analizar qué proceso tiene el Zombi estado del proceso. Si bien no podrá eliminar estos procesos directamente porque el sistema ya los eliminó de la memoria, puede eliminar el proceso principal asociado con ellos.

Primero, debe verificar si la tabla de procesos de su sistema tiene un proceso zombie. Puedes hacerlo fácilmente usando el cima mando. Simplemente abra su terminal y escriba:

cima

Verá una salida similar a esta. Observe el recuento de procesos zombies en la parte superior de la ventana de la terminal. Si la salida es cero, entonces no tiene nada de qué preocuparse.

Puede enumerar información relacionada con estos procesos zombies mediante la canalización el comando ps con garza. Egrep es una extensión del comando grep en Linux que trata todos los patrones como una cadena de expresiones regulares extendida.

Relacionados: La guía para principiantes de expresiones regulares con Python

Escriba el siguiente comando para enumerar todos los procesos zombies:

ps aux | egrep "Z | difunto"

El comando antes mencionado buscará líneas que contengan Z o difunto en la salida generada por el comando ps. La salida consiste en una lista de los procesos zombis que se ejecutan en su sistema.

Matar procesos zombis usando el comando kill

Ahora que sabe qué procesos zombies están consumiendo los recursos de su sistema, es hora de eliminar estos procesos.

Si bien la forma más fácil de eliminar los procesos zombis es reiniciando su computadora, a veces esta no es una opción factible, especialmente si está administrando un servidor.

Para matar procesos zombies sin apagar su servidor, anote el ID de proceso de cualquier proceso zombi. De la sección anterior, podemos ver que el PID del proceso zombie fue 18614. Luego, use este PID para encontrar el ID del proceso principal.

ps -o ppid = -p 18614

Producción:

18613

Verifique si existe el ID del proceso principal usando el PD mando.

ps -e | grep 18613

Ahora que hemos confirmado la existencia del proceso padre, es hora de acabar con él. Pasa el -SIGKILL bandera con el matar comando de la siguiente manera:

sudo matar -SIGKILL 18613

Una vez que haya eliminado el proceso principal, el sistema eliminará el proceso zombie y lo eliminará de la tabla de procesos automáticamente.

Administrar procesos de manera eficiente en Linux

Cada administrador de sistema debe priorizar los procesos de monitoreo que se ejecutan en una máquina Linux. Aunque los procesos zombies no son necesariamente dañinos para su sistema, pueden causar problemas de rendimiento si existen en un gran número.

Si es un usuario principiante de Linux y no tiene idea de cómo el sistema operativo Linux gestiona los procesos, aprender primero qué son los procesos es un buen punto de partida.

Correo electrónico
¿Qué es un proceso en Linux?

Comprender los procesos y los trabajos es un aspecto clave para familiarizarse con Linux. Esto es lo que necesita saber.

Leer siguiente

Temas relacionados
  • Linux
  • Linux
  • Procesando
Sobre el Autor
Sharma profundo (45 Artículos publicados)

Deepesh es el editor junior para Linux en MUO. Ha estado escribiendo contenido informativo en Internet durante más de 3 años. En su tiempo libre le gusta escribir, escuchar música y tocar la guitarra.

Más de Deepesh Sharma

Suscríbete a nuestro boletín

¡Únase a nuestro boletín de noticias para obtener consejos técnicos, reseñas, libros electrónicos gratuitos y ofertas exclusivas!

Un paso más…!

Confirme su dirección de correo electrónico en el correo electrónico que le acabamos de enviar.

.