Estoy ejecutando un programa en la terminal del que no puedo escapar con Ctrl –C y que quiero matar. ¿Cómo puedo encontrar su PID?
Mejor respuesta
Abre otra terminal y ejecuta ps ax | grep foo
donde foo es el nombre del programa que no responde. Esto debería devolver una línea de salida que se parece a esto:
$ ps ax | grep firefox
2222 ? S 0:00 /bin/sh /usr/lib/firefox-3.6.9/firefox
2231 ? Sl 514:36 /usr/lib/firefox-3.6.9/firefox-bin
30290 pts/2 S+ 0:00 grep --color=auto firefox
El primer campo de cada línea de salida es un número que representa el ID de proceso del programa que coincide con grep
(puede ignorar con seguridad el último, que representa grep
mismo.
Para detener el proceso ofensivo, haga:kill pid
donde pid es el ID de proceso del programa. Es posible que deba usar su juicio sobre cuál de las coincidencias debe ser kill
ed, o podrías usar top
en cambio. Usando kill
por sí mismo envía SIGTERM, que debe probar primero, ya que permite que el programa se limpie correctamente después de sí mismo. Si SIGTERM falla, pruebe SIGHUP, que es una medicina más fuerte:kill -HUP pid
. Si todo lo demás falla, envía SIGKILL. Pero, solo debe hacerlo como último recurso, porque SIGKILL hace que el kernel finalice el proceso inmediatamente sin posibilidad de limpieza. Esto a veces puede resultar en la corrupción de datos u otros problemas. Entonces, de nuevo, solo envíe SIGKILL como último recurso. Para hacerlo, haga kill -KILL pid
o kill -9 pid
.
Si está ejecutando una interfaz gráfica, por supuesto, no tiene que perder el tiempo con esta loca línea de comandos para hacer el trabajo. Simplemente abra el "Monitor del sistema", navegue a la pestaña Procesos, elija el proceso que desea detener (Hm, ¿podría ser el que usa el 90% de la CPU?) y haga clic con el botón derecho en él. Dado que el proceso ya se detuvo (ese es el problema, ¿verdad?), elija Finalizar proceso o Eliminar proceso en el menú resultante.
Crédito para koanhead