Como en las respuestas anteriores, la forma más segura de terminar un proceso es SIGKILL
, por ejemplo. kill -9 process_id
.
Sin embargo, existen procesos que son simplemente imposibles de Force Quit
ni kill
. Llamaron como zombie
procesos.
Aquí hay un breve guión que creará un proceso zombie
durante dos minutos:
perl -e 'if($p=fork) {print "unkillable pid:$p\n" ;system("ps -l"); sleep(120)}'
Ejecute el script anterior en la Terminal y obtendrá una salida, como la siguiente:
unkillable pid:50571
UID PID PPID F CPU PRI NI SZ RSS WCHAN S ADDR TTY TIME CMD
501 47380 47379 4006 0 31 0 2448416 2900 - S 0 ttys000 0:00.36 -bash
501 50570 47380 4006 0 31 0 2443512 1424 - S+ 0 ttys000 0:00.01 perl -e if($p=fork) {print "u
#THIS-> 501 50571 50570 2006 0 0 0 0 0 - Z+ 0 ttys000 0:00.00 (perl)
501 12795 12794 4006 0 31 0 2448296 1752 - S+ 0 ttys001 0:00.75 -bash
501 50123 50122 4006 0 31 0 2448296 2688 - S+ 0 ttys002 0:00.14 -bash
Si verifica la columna de estado para el proceso que no se puede matar (en este caso: 50571) verá el indicador Z
, ¿qué significa zombie
?
Puedes intentar enviar cualquier señal kill
(por ejemplo, kill -9 50571
) y el proceso seguirá existiendo. De todos modos, no duele mucho su sistema, porque en realidad no existe, solo ocupa la tabla de procesos.
En el ejemplo anterior, en 120 segundos se borrará.