Le ha ocurrido a todos, se lanzó una aplicación y, de repente, mientras se usa la aplicación deja de responder y se cuelga inesperadamente.
Intentamos volver a iniciar la aplicación, pero no sucede nada porque el proceso original de la aplicación nunca se cierra por completo.
Bueno, no hay que aproblemarse. La solución es terminar o matar el proceso de solicitud. ¿Pero cómo?
Afortunadamente, hay varias utilidades en Linux que nos permiten eliminar los procesos con problemas.
En este tutorial mostraremos cómo usar las utilidades kill y killall para finalizar un proceso en Linux. La principal diferencia entre estas dos herramientas es que killall finaliza los procesos en ejecución en función del nombre, mientras que kill finaliza los procesos según el número de identificación del proceso (PID).
Los usuarios normales pueden terminar sus propios procesos, pero no los que le pertenecen a otros usuarios, mientras que el usuario root puede terminar todos los procesos.
kill y killall pueden enviar una señal especificada a un proceso específico o grupos de procesos. Cuando se utiliza sin señal, ambas herramientas enviarán -15 (-TERM).
Las señales más comúnmente usadas son:
- 1 (-HUP): para reiniciar un proceso.
- 9 (-KILL): para matar un proceso.
- 15 (-TERM): detener con gracia un proceso.
Las señales se pueden especificar de tres maneras diferentes:
- usando el número (p. ej., -1)
- con el prefijo “SIG” (por ejemplo, -SIGHUP)
- sin el prefijo “SIG” (por ejemplo, -HUP).
Use la opción -l para listar todas las señales disponibles:
kill -l # or killall -l
Finalizar procesos con el comando kill
Para terminar un proceso con el comando kill, primero necesitamos encontrar el PID del proceso. Podemos hacer esto a través de varios comandos diferentes, como top, ps, pidof y pgrep.
Digamos que nuestro navegador Firefox ha dejado de responder y tenemos que matar el proceso de Firefox. Para encontrar el proceso PID podemos usar el comando pidof:
pidof firefox
El comando anterior imprimirá todos los procesos de Firefox:
2551 2514 1963 1856 1771
Una vez que sabemos que Firefox procesa los PID, podemos matarlos a todos con:
kill -9 2551 2514 1963 1856 1771
Finalizar procesos con el comando killall
El comando killall termina todos los programas que coinciden con un nombre específico.
Usando el mismo escenario que antes, podemos finalizar el proceso de Firefox escribiendo:
killall -9 firefox
El comando killall acepta varias opciones, como la especificación de procesos que se ejecutan en el usuario, utilizando expresiones regulares y procesos de eliminación menores o mayores que un tiempo especificado.
Puede obtener una lista de todas las opciones escribiendo killall (sin ningún argumento).
Por ejemplo, si queremos finalizar todos los procesos que se ejecutan como un usuario chris, ejecutaremos el siguiente comando:
killall -u chris