GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo matar procesos Zombie en Ubuntu

Un zombi o un proceso inactivo en Linux es un proceso que se ha completado, pero su entrada aún permanece en la tabla de procesos debido a la falta de correspondencia entre los procesos padre e hijo. Por lo general, un proceso principal controla el estado de sus procesos secundarios a través de la función wait(). Cuando el proceso hijo ha terminado, la función de espera le indica al padre que salga por completo del proceso de la memoria. Sin embargo, si el padre falla al llamar a la función de espera para cualquiera de sus hijos, el proceso hijo permanece vivo en el sistema como un proceso muerto o zombi. Estos procesos zombis pueden acumularse, en grandes cantidades, en su sistema y afectar su rendimiento. En ese caso, es posible que deba matar a estos zombis manualmente mediante las formas y los comandos descritos en este tutorial.

Este tutorial es compatible con todas las versiones recientes de Ubuntu, incluido Ubuntu 22.04.

Visualización de procesos zombi

Puede verificar el rendimiento de su sistema observando los diversos procesos que se ejecutan en su sistema, incluidos los procesos zombies que alteran la eficiencia. Ubuntu le permite ver estos procesos de la siguiente manera:

  • A través de la interfaz gráfica de usuario
  • A través de la línea de comandos

A través de la GUI

Para ver gráficamente cualquier proceso zombie que se esté ejecutando en su sistema, abra el Monitor del sistema utilidad a través de su Ubuntu Dash. En la siguiente captura de pantalla de mi monitor de sistema, puede ver que hay dos zombis ejecutándose en mi sistema. También es posible que la cantidad de procesos zombis en su sistema sea menor o mayor que los que se ejecutan en el mío.

A través de la línea de comandos

La parte superior El comando muestra una vista detallada de los procesos que se ejecutan en su sistema junto con la memoria y los recursos de la CPU que están utilizando. También le brinda información sobre cualquier proceso zombie que se esté ejecutando en su sistema. Abre la Terminal presionando Ctrl+Alt+T y luego escriba superior . Obtuve el siguiente resultado después de ejecutar este comando.

$ arriba

Puede ver en la segunda línea que hay 1 proceso zombie ejecutándose en mi sistema.

Si desea más detalles sobre el proceso zombie, use el siguiente comando:

$ ps axo stat,ppid,pid,comm | grep -w defunct

Este comando le dará el estado, parentID, el ID del proceso, el programa que está ejecutando el proceso zombie (un programa ficticio con el nombre 'zombie' en mi sistema). La bandera desaparecida te dice que este es un proceso zombi muerto.

Proceso para matar a un zombi

Primero, comprendamos cómo los procesos zombis son una amenaza para el rendimiento de nuestro sistema. Es importante saber que los zombis están muertos y en su mayoría completan procesos que no consumen recursos de memoria o CPU. Sin embargo, cada uno de estos procesos tiene asignado un ID de proceso único que proviene de un conjunto limitado de PID reservados para su procesador. Si se reúne una gran cantidad de zombis, se comerán la mayor parte del grupo de PID y los nuevos procesos no podrán iniciarse debido a la falta de una ID de proceso.

Una pequeña cantidad de programas obsoletos que ocupan su sistema no es una gran amenaza, pero eso significa que sus programas principales no han podido cancelarlos debido a un error o a que falta la función wait().

Cuando un proceso principal no ha podido llamar a la función esperar () automáticamente, debemos indicar manualmente al proceso principal que ejecute la función de espera en todos sus hijos para que se pueda volver a llamar a los que tienen un estado completo. Podemos hacer esto ejecutando el comando SIGCHLD. Cuando eso no funciona, podemos matar manualmente el proceso principal para que todos sus hijos zombies también mueran, liberando las ID de proceso para los nuevos procesos.

Puede matar los procesos zombies de las siguientes maneras:

  • A través de la interfaz gráfica de usuario
  • A través de la línea de comandos

A través de la GUI

Puede eliminar un proceso zombi gráficamente a través de la Utilidad del monitor del sistema de la siguiente manera:

  1. Abra el Monitor del sistema utilidad a través de Ubuntu Dash.
  2. Buscar el término Zombie a través de la Buscar botón.
  3. Seleccione el proceso zombie, haga clic derecho y luego seleccione Kill del menú.

El proceso zombie se eliminará de su sistema.

A través de la línea de comandos

Después de que sepa que hay procesos zombie ejecutándose en su sistema a través del comando superior. Así es como ver los detalles de los procesos.

La forma habitual es usar el siguiente comando que indica al proceso principal del zombi que elimine el comando.

$ kill -s SIGCHLD PID

Es posible que este comando no funcione en algunos casos, ya que no todos los procesos principales están programados correctamente para verificar los procesos secundarios. En ese caso, puede eliminar el proceso principal mediante el siguiente comando:

$ sudo kill -9 3376

Cuando haya eliminado todos los procesos zombies de esta manera y ejecute el comando superior, podrá ver que ya no hay procesos zombies ejecutándose en su sistema:

Después de trabajar junto con este tutorial, puede optimizar su sistema operativo buscando cualquier proceso zombie en su sistema y eliminándolo manualmente a través de la línea de comando o la interfaz gráfica de usuario. Este acto liberará ID de proceso para los nuevos procesos que desea ejecutar en su sistema.


Linux
  1. Cómo matar un proceso zombie en Linux

  2. Cómo encontrar y matar el proceso Zombie en Linux

  3. ¿Qué son los procesos zombis y cómo encontrar y eliminar procesos zombis?

  4. Matar procesos en Raspbian

  5. ¿Cómo elimino los procesos anteriores a t?

Cómo encontrar y matar Procesos Zombie en CentOS 8

Cómo crear un proceso zombie ficticio en Ubuntu 18.04 LTS

Cómo matar procesos Zombie en Ubuntu 20.04 LTS

Cómo MATAR un proceso en Linux

Cómo matar procesos en Linux usando kill, killall y pkill

¿Cómo arreglar el sistema Ubuntu que no responde?