Introducción
En este laboratorio, aprenderás cómo terminar procesos en Linux utilizando los comandos kill, killall y pkill. Estos comandos son esenciales para gestionar los procesos en ejecución y se pueden utilizar para detener aplicaciones no respondientes o liberar recursos del sistema.
Al final de este laboratorio, podrás:
- Utilizar el comando
killpara terminar un proceso específico - Utilizar el comando
killallpara terminar múltiples procesos por nombre - Utilizar el comando
pkillcomo alternativa akillall
Comprender los Identificadores de Proceso (PID) y las Señales
Antes de comenzar a terminar procesos, es importante entender dos conceptos clave: los Identificadores de Proceso (PIDs, por sus siglas en inglés) y las señales.
Abre una terminal en tu máquina virtual de Ubuntu. Por defecto, deberías estar en el directorio
/home/labex/project. Si no estás seguro, siempre puedes verificar tu directorio actual escribiendopwdy presionando Enter.Comencemos ejecutando un simple proceso en segundo plano. Ingresa el siguiente comando:
sleep 1000 &Este comando inicia un proceso que se detendrá (dormirá) durante 1000 segundos y lo ejecuta en segundo plano. El
&al final le dice a la shell que ejecute el comando en segundo plano, lo que te permite seguir usando la terminal.Para ver los procesos en ejecución, utiliza el comando
ps:ps aux | grep sleepEste comando muestra todos los procesos en ejecución (
ps aux) y luego filtra la salida para mostrar solo las líneas que contengan "sleep" (grep sleep).Deberías ver una salida similar a esta:

El número en la segunda columna es el Identificador de Proceso (PID). Lo usaremos más adelante para terminar el proceso.
- Linux utiliza señales para comunicarse con los procesos. Las señales más comunes para terminar procesos son:
- SIGTERM (15): Termina el proceso de manera elegante. Esta es la señal predeterminada enviada por el comando
kill. - SIGKILL (9): Mata el proceso de forma forzada. Esto se debe utilizar como último recurso cuando SIGTERM no funciona.
- SIGTERM (15): Termina el proceso de manera elegante. Esta es la señal predeterminada enviada por el comando
Ahora que entendemos los PIDs y las señales, estamos listos para pasar a utilizar el comando kill.
Usando el Comando kill
El comando kill se utiliza para enviar una señal a un proceso específico, identificado por su PID. Por defecto, envía la señal SIGTERM, que le pide al proceso que se termine de manera elegante.
Vamos a terminar el proceso
sleepque iniciamos anteriormente. Primero, encuentra su PID utilizando el comandops:ps aux | grep sleepAnota el PID del proceso
sleep. Será un número en la segunda columna de la salida.Ahora, utiliza el comando
killpara terminar el proceso:kill <PID>Reemplaza
<PID>con el Identificador de Proceso real que anotaste. Por ejemplo, si el PID es 1234, escribiríaskill 1234.Verifica si el proceso sigue en ejecución:
ps aux | grep sleepYa no deberías ver el proceso
sleepen la salida, excepto por el propio comandogrep.
Si el proceso sigue en ejecución (lo cual es poco probable para un simple comando sleep, pero posible para aplicaciones más complejas), puedes utilizar una señal más fuerte:
kill -9 <PID>

Esto envía la señal SIGKILL, que termina el proceso de forma forzada. Ten precaución con SIGKILL ya que no permite que el proceso se limpie adecuadamente, lo que podría provocar pérdida de datos u otros problemas en aplicaciones más complejas.
Usando el Comando killall
El comando killall te permite terminar procesos por nombre, lo cual puede ser más conveniente que utilizar PIDs, especialmente cuando tienes múltiples instancias del mismo programa en ejecución.
Inicia múltiples procesos
sleep:sleep 2000 & sleep 2000 & sleep 2000 &Este comando inicia tres procesos
sleepseparados, cada uno ejecutándose durante 2000 segundos en segundo plano.Verifica que los procesos estén en ejecución:
ps aux | grep sleepDeberías ver tres procesos
sleeplistados.Ahora, utiliza el comando
killallpara terminar todos los procesossleep:sudo killall sleepUsamos
sudoaquí porquekillallpuede necesitar privilegios elevados para terminar procesos iniciados por otros usuarios o procesos del sistema. Puedes ser solicitado a ingresar tu contraseña.Verifica que los procesos hayan sido terminados:
ps aux | grep sleepYa no deberías ver ningún proceso
sleepen la salida, excepto por el propio comandogrep.
Si recibes un error "Operation not permitted" (Operación no permitida), significa que no tienes los permisos necesarios para terminar ciertos procesos. En este caso, utilizar sudo como se muestra arriba debería resolver el problema.
Usando el Comando pkill
El comando pkill es otra forma de terminar procesos por nombre, similar a killall. Es especialmente útil cuando quieres terminar procesos basados en coincidencias parciales del nombre.
Inicia algunos procesos
sleepmás:sleep 3000 & sleep 3000 & sleep 3000 &Esto inicia tres procesos
sleepmás, cada uno ejecutándose durante 3000 segundos en segundo plano.Utiliza el comando
pkillpara terminar estos procesos:sudo pkill sleepAl igual que con
killall, usamossudopara asegurarnos de tener los permisos necesarios para terminar todos los procesos coincidentes.Verifica que los procesos hayan sido terminados:
ps aux | grep sleepNo deberías ver ningún proceso
sleepen la salida, excepto por el propio comandogrep.
La principal diferencia entre pkill y killall es que pkill puede coincidir con un nombre de proceso parcial. Por ejemplo, pkill fire mataría tanto los procesos firefox como los de firebird. Esto puede ser tanto poderoso como peligroso, así que siempre verifica dos veces tus comandos pkill antes de ejecutarlos.
Practicar con Aplicaciones Reales
Ahora que has aprendido cómo usar kill, killall y pkill, practiquemos con una aplicación real. Usaremos Firefox como ejemplo, debes practicar este paso en el entorno de escritorio.

Inicia el navegador web Firefox:
firefox &Este comando lanza Firefox en segundo plano. Deberías ver la ventana de Firefox abrirse en tu escritorio.
Utiliza el comando
pspara encontrar el PID de Firefox:ps aux | grep firefoxAnota el PID del proceso principal de Firefox. Por lo general, será el primer proceso de Firefox en la lista.
Utiliza el comando
killpara terminar Firefox:kill <PID>Reemplaza
<PID>con el Identificador de Proceso real de Firefox que anotaste.Si Firefox no se cierra (lo cual es posible ya que algunas aplicaciones capturan la señal SIGTERM), intenta usar la señal SIGKILL:
kill -9 <PID>Recuerda, SIGKILL debe usarse como último recurso ya que no permite que la aplicación guarde su estado o se limpie adecuadamente.
Alternativamente, puedes usar
killallopkill:sudo killall firefoxo
sudo pkill firefoxEstos comandos terminarán todos los procesos de Firefox a la vez, lo cual puede ser más conveniente que matar los procesos uno por uno.
Recuerda, terminar forzosamente aplicaciones puede provocar pérdida de datos, así que siempre es mejor cerrar las aplicaciones normalmente cuando sea posible. Estos comandos deben usarse cuando una aplicación no responde o cuando necesitas liberar rápidamente recursos del sistema.
Resumen
¡Felicidades! Has completado con éxito este laboratorio sobre la terminación de procesos en Linux. Has aprendido cómo:
- Utilizar el comando
killpara terminar un proceso específico por su PID - Utilizar el comando
killallpara terminar múltiples procesos por nombre - Utilizar el comando
pkillcomo alternativa akillall - Aplicar estos comandos tanto a procesos simples en segundo plano como a aplicaciones reales
Recuerda, aunque estos comandos son herramientas poderosas para la gestión de procesos, utilízalos con precaución. Terminar procesos críticos del sistema puede causar inestabilidad en el sistema. Siempre verifica el proceso que estás terminando antes de utilizar estos comandos.
A medida que continúes tu viaje en Linux, encontrarás que estas habilidades de gestión de procesos son invaluable para mantener un sistema que funcione sin problemas y solucionar problemas. ¡Sigue practicando estos comandos para sentirte más cómodo con la gestión de procesos en Linux!



