Proceso zombi
También: proceso difunto (defunct)
Respuesta rápida
Un proceso zombi es un proceso que ya ha terminado pero sigue teniendo una entrada en la tabla de procesos, porque su proceso principal todavía no ha recogido su estado de salida. No usa CPU y casi no ocupa memoria.
Cuando un proceso termina, el sistema guarda un pequeño registro para que el proceso principal pueda saber cómo acabó. Normalmente el proceso principal lee ese registro enseguida y la entrada desaparece. Si nunca lo hace, el proceso terminado sigue en la lista como zombi.
Unos pocos zombis no hacen daño. Un número que crece sin parar indica un error en el programa principal.
Cómo encontrar procesos zombi en un Mac
En Terminal, ejecuta ps -axo pid,ppid,stat,comm | awk '$3 ~ /^Z/'. Cada línea es un zombi, y la columna PPID muestra el proceso principal responsable.
Cómo eliminar un proceso zombi
No puedes matar un zombi, porque ya ha terminado. La solución está en el proceso principal. Sal de la app principal o reiníciala, y el zombi pasa a launchd, que lo limpia.
No cierres launchd ni otros procesos del sistema para eliminar zombis. Si el proceso principal es del sistema, reiniciar el Mac los elimina.
Cómo encontrar el proceso principal de un zombi
En la columna del comando completo de ps, un zombi aparece como <defunct>, porque su programa ya ha terminado. El proceso del que tienes que ocuparte es el principal.
- Ejecuta
ps -axo pid,ppid,stat,comm | awk '$3 ~ /^Z/'para listar los zombis. La Z de la columna STAT marca un zombi. - Apunta el número de la columna PPID.
- Ejecuta
ps -p <PPID> -o pid,user,commandpara ver qué programa es el proceso principal. - En Monitor de Actividad, elige Visualización > Todos los procesos, jerárquicamente para ver el mismo árbol de procesos principales y secundarios.
- Ocúpate del proceso principal. Si es una app que abriste, sal de ella y vuelve a abrirla. Si es un shell o un script en Terminal, cierra esa ventana o detén el script. Si es un proceso del sistema, reinicia el Mac.
Normal o preocupante
Un programa principal recoge el estado de salida de un proceso secundario con la familia de llamadas al sistema wait. Un programa que inicia procesos secundarios pero nunca los espera va dejando zombis. Es un error del programa principal, y solo su desarrollador puede arreglarlo del todo.
Ver un zombi un momento es normal. Existe entre el momento en que un proceso termina y el momento en que su proceso principal lee su estado de salida, que suele ser muy breve.
Merece un vistazo cuando el mismo proceso principal acumula muchos zombis, o cuando su número no deja de crecer durante horas. Para contarlos, ejecuta ps -axo stat | grep -c '^Z'. Para ver los límites de procesos de tu Mac, ejecuta sysctl kern.maxproc kern.maxprocperuid.
Procesos zombi, huérfanos y colgados no son lo mismo
Estos tres términos se confunden a menudo, y cada uno necesita una solución distinta.
- Un zombi ha terminado de ejecutarse. Solo queda su entrada en la tabla de procesos.
- Un huérfano sigue en ejecución, pero su proceso principal ha terminado. macOS se lo pasa a launchd, el PID 1, que se convierte en su nuevo proceso principal.
- Un proceso colgado sigue en ejecución pero atascado, y a menudo aparece como “No responde” en Monitor de Actividad. A diferencia de un zombi, se puede salir de él o forzar su salida.
Lo que no debes hacer
En pequeñas cantidades, los zombis no hacen daño, así que no hay motivo para arriesgarse a eliminarlos.
- No ejecutes
kill -9con el PID del zombi. Ya ha terminado, así que la señal no tiene ningún efecto. - No cierres launchd ni otros procesos del sistema para eliminar zombis. Un reinicio hace lo mismo sin riesgo.
- No cierres el proceso principal sin comprobar qué es. Si es una app con documentos abiertos, guarda antes tu trabajo.
Preguntas frecuentes
¿Qué es un proceso zombi en un Mac?
Es un proceso que ha terminado pero sigue en la lista porque su proceso principal no ha recogido su estado de salida. No usa CPU.
¿Cómo mato un proceso zombi?
No puedes matarlo directamente. Sal de su proceso principal o reinícialo (aparece en la columna PPID de ps) y el zombi desaparece.
¿Son peligrosos los procesos zombi?
Unos pocos, no. Cada uno ocupa un hueco en la tabla de procesos, así que un número grande y creciente puede acabar dando problemas y apunta a un programa principal con errores.
¿Por qué kill -9 no elimina un proceso zombi?
Un zombi no se está ejecutando, así que la señal no tiene nada que detener. Solo desaparece cuando su proceso principal recoge su estado de salida o cuando el propio proceso principal termina.
¿Reiniciar el Mac elimina los procesos zombi?
Sí. Un reinicio termina todos los procesos, incluidos los zombis y sus procesos principales.
¿Los procesos zombi son señal de malware?
No. Son una parte normal de cómo terminan los procesos en Unix. Muchos zombis del mismo proceso principal suelen significar que ese programa tiene un error.
Relacionado
¿Vienes de Windows? Consulta Administrador de tareas para Mac, o las mejores alternativas a Monitor de Actividad. O explora todos los términos del glosario.