El comando kill
es una herramienta esencial en el repertorio de todo usuario de Linux. Sirve para enviar señales a los procesos, lo que nos permite controlarlos o, como su nombre sugiere, «matarlos». Pero no te asustes, el término «matar» en este contexto no es tan violento como parece. En este artículo, aprenderás a usar kill
de forma efectiva, incluso si nunca antes has usado la línea de comandos.
Entendiendo las Señales en Linux
Antes de sumergirnos en el uso del comando kill
, es esencial comprender las señales en Linux.
¿Qué es una señal?
Las señales son una forma de comunicación entre procesos en un sistema operativo Linux. Permiten que un proceso le indique a otro que realice alguna acción, ya sea detenerse, reiniciarse o incluso terminar.
Tipos Comunes de Señales
- SIGTERM (15): Esta es la señal por defecto enviada por
kill
. Le dice al proceso que termine de forma amable, dándole la oportunidad de liberar recursos y guardar datos si es necesario. - SIGKILL (9): Es una señal más fuerte que forza al proceso a terminar de inmediato. Es útil cuando un proceso no responde a SIGTERM.
- SIGSTOP (17,19,23): Detiene (pausa) un proceso.
- SIGCONT (18,20,24): Continúa un proceso que fue detenido.
Uso Básico del Comando kill
Identificar el ID del Proceso (PID)
Antes de enviar una señal a un proceso, debes conocer su ID de Proceso (PID). Puedes usar comandos como ps
, pgrep
o top
para obtener el PID.
Ejemplo:
ps aux | grep [nombre_del_proceso]
Enviando Señales con kill
Una vez que tengas el PID, puedes enviarle una señal con kill
.
Ejemplo:
kill -15 [PID]
Esto enviará la señal SIGTERM al proceso. Si no responde, puedes forzar el cierre con:
kill -9 [PID]
Consejos y Trucos Avanzados
Usando killall
En lugar de buscar el PID y luego matar el proceso, puedes usar killall
seguido del nombre del proceso. Esto matará todos los procesos con ese nombre.
Ejemplo:
killall [nombre_del_proceso]
Matar Procesos por Nombre con pkill
Similar a killall
, pero puedes usar expresiones regulares para especificar qué procesos matar.
Ejemplo:
pkill -9 -f "nombre*"
Esto matará todos los procesos cuyo nombre comience con «nombre».
Enviando Señales a Grupos de Procesos
Si inicias varios procesos desde una misma shell, pertenecen al mismo grupo. Puedes enviar una señal a todo el grupo usando el PID negativo.
Ejemplo:
kill -TERM -[PID]