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.
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 son procesos muertos y en su mayoría completados 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 detenerlos 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 indicarle 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:
- Abra el Monitor del sistema utilidad a través de Ubuntu Dash.
- Buscar el término Zombie a través de la Buscar botón.
- 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
Una vez que sepa que hay procesos zombie ejecutándose en su sistema a través del comando superior, vea 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.