Finalización de procesos: comandos kill
, killall
, pkill
1. Finalización de procesos
Hoy daremos un paso más allá y aprenderemos comandos que permiten finalizar procesos de manera eficiente. ¡Prepárate, porque la paciencia hacia los programas "colgados" pronto llegará a su fin!
Cada aplicación o comando en ejecución en Linux es un proceso. ¿Pero qué hacer si un programa se cuelga, consume el 100% de los recursos de la CPU o simplemente deja de funcionar correctamente? La tarea del administrador (o desarrollador) es intervenir y terminar el proceso "rebelde". En Linux, para esto se usa todo un arsenal de herramientas: kill
, killall
y pkill
. No te preocupes, a pesar de los nombres intimidantes, no estamos aquí para romper todo. Más bien, es una forma elegante de poner todo en orden.
2. Comando kill
Conceptos básicos
El comando kill
finaliza un proceso utilizando su identificador (PID). El PID es un número único que el sistema asigna a cada proceso. Por ejemplo, si quieres finalizar un proceso con PID 1234, usa el siguiente comando:
kill 1234
Linux, por naturaleza, es bastante democrático, así que el comando kill
no le da al proceso una orden de "morir", sino una solicitud de finalización. Esta solicitud se llama "señal". Por defecto, kill
envía la señal SIGTERM
(15).
¿Qué es una señal?
Linux usa señales para comunicarse con los procesos. Es como enviar postales con diferentes intenciones:
SIGTERM
(15): "Por favor, finaliza". Es una solicitud amable al proceso para que termine de ejecutarse.SIGKILL
(9): "¡Ya basta, estás despedido!" Finalización forzada del proceso.SIGHUP
(1): "Oye, recarga la configuración". Se usa para reiniciar algunos procesos sin detenerlos.
Ejemplo de finalización forzada de un proceso:
kill -9 1234
Si el proceso se niega a finalizar con SIGTERM
, puedes enviar una señal más estricta: SIGKILL
.
¿Cómo saber el PID de un proceso?
Para usar el comando kill
, necesitas saber el PID del proceso. Aquí vienen al rescate los comandos ya conocidos ps
, top
o htop
. Por ejemplo, la salida del comando ps aux
te mostrará todos los procesos en ejecución:
ps aux | grep firefox
Esta consulta encontrará el proceso de Firefox y mostrará su PID.
Proceso terminado, puedes respirar tranquilo. Pero, ¿qué hacer si hay varios procesos "colgados"? Aquí es donde entran en juego los comandos killall
y pkill
.
3. Comando killall
Comodidad para finalización masiva
El comando killall
te permite finalizar todos los procesos con un nombre específico. No necesitas buscar el PID manualmente, todo se hace mucho más fácil. Por ejemplo, si quieres cerrar todas las instancias de Firefox en ejecución:
killall firefox
Al igual que el comando kill
, killall
envía señales a los procesos. Puedes especificar una señal concreta:
killall -9 firefox
Consejo útil
Ten cuidado con comandos como killall
. Si por error especificas un proceso demasiado general, por ejemplo, killall python
, podrías finalizar de golpe todas las aplicaciones Python en ejecución, incluidas tareas del servidor o scripts importantes.
¿Qué señales se soportan?
Para todos los comandos kill
, killall
y pkill
, la lista de señales disponibles se puede consultar con el comando:
kill -l
4. Comando pkill
Buscando procesos por nombre (o parte de él)
El comando pkill
funciona de manera similar a killall
, pero es más flexible. Permite finalizar procesos que coinciden con un patrón específico. Por ejemplo:
pkill fire
El comando finalizará todos los procesos que contengan la palabra "fire" en su nombre. Esto es útil cuando el nombre del proceso es largo o solo conoces una parte de él.
Finalizando procesos de usuarios
Puedes finalizar procesos que pertenecen a usuarios específicos. Por ejemplo:
pkill -u username
Esto finalizará todos los procesos que pertenezcan al usuario username
.
Comparación de kill
, killall
y pkill
Comando | Características |
---|---|
kill |
Finaliza el proceso por PID. Funciona de manera puntual. |
killall |
Finaliza todos los procesos con un nombre especificado. Ideal para cierre masivo. |
pkill |
Finaliza procesos por nombre o patrón. Soporta parámetros adicionales, como el nombre de usuario. |
5. Práctica: finalizamos procesos
Vamos a probar todo lo que hemos aprendido en acción. Para empezar, ejecutemos algunos procesos de larga duración:
sleep 300 &
sleep 400 &
sleep 500 &
Estos comandos crearán tres procesos en segundo plano con diferentes tiempos de espera. Ahora puedes trabajar con los comandos kill
, killall
y pkill
.
- Ver todos los procesos
sleep
en ejecución usando el comandops
:
ps aux | grep sleep
Verás el PID de cada proceso.
- Finaliza el proceso con PID, por ejemplo, 1234:
kill 1234
- Finaliza todos los procesos
sleep
de una vez:
killall sleep
- Ejecuta algunos procesos más de
sleep
y termínalos conpkill
:
pkill sl
6. Errores típicos y detalles importantes
Si intentas finalizar un proceso para el que no tienes permisos (por ejemplo, el proceso de otro usuario), el comando mostrará un error. Para eso necesitas tener privilegios de superusuario (sudo). Por ejemplo:
sudo kill 1234
Otra fuente de confusión puede ser el uso de señales demasiado agresivas como -9
. Esto es equivalente a desconectar el ordenador directamente de la corriente: el sistema no tendrá tiempo de liberar recursos o guardar datos. Usa SIGKILL
solo en casos extremos.
Ten cuidado con killall
y pkill
, especialmente si estás gestionando un servidor. Finalizar procesos "a ciegas" puede llevar a la pérdida de datos importantes.
¿Por qué es importante conocer los comandos para finalizar procesos?
Estos comandos tienen un amplio rango de uso, desde matar aplicaciones bloqueadas hasta gestionar procesos en servidores. En entrevistas, el conocimiento de kill
y pkill
puede ser un indicador importante de tu competencia, especialmente si hablamos de administración de sistemas o trabajo con el backend.
Usa este conocimiento para crear scripts que finalicen automáticamente procesos descontrolados o liberen puertos ocupados. Por ejemplo, antes de iniciar un servidor que ocupe el puerto 8080, puedes usar:
pkill -f "port 8080"
La flexibilidad y potencia de estos comandos los vuelven herramientas indispensables para cualquier especialista en Linux.
GO TO FULL VERSION