Gestionar procesos en Linux significa entender en qué estado están corriendo y cómo intervenirlos sin romper el sistema. Aquí aprendes a identificar los estados de un proceso, mover tareas entre background y foreground, y terminar procesos con las señales correctas usando comandos como kill, killall y herramientas como htop.
¿Cuáles son los estados de un proceso en Linux?
Cada proceso que arranca en tu sistema pasa por uno de varios estados. Conocerlos te permite saber si está consumiendo recursos, esperando, pausado o si quedó como residuo del sistema.
- Running o runnable (R): el proceso está consumiendo CPU o memoria activamente.
- Sleep interrumpible (S): está en espera y puede terminarse con señales comunes.
- Sleep no interrumpible (D): espera recursos y solo puede terminarse con
SIGKILL.
- Stopped (T): está pausado y no vuelve a running hasta que tú lo indiques.
- Zombie (Z): el proceso terminó pero quedó desvinculado de su proceso padre, como
init.
La diferencia entre sleep y stopped es clave: un proceso en sleep vuelve a running en cuanto haya recursos disponibles, mientras que uno stopped se queda quieto hasta que tú lo reactives [01:52].
¿Qué es un proceso zombie en Linux? Es un proceso que terminó su ejecución pero quedó desvinculado de su proceso padre. Linux lo marca con la letra Z para evitar conflictos en el sistema.
¿Cómo enviar procesos a background y foreground?
Mover procesos entre primer y segundo plano te da control sobre tu terminal sin tener que cerrarlos. Es básico cuando manejas servidores o tareas largas.
Cómo mando un proceso a background con ampersand
La forma más rápida es agregar un ampersand (&) al final de cualquier comando. Por ejemplo, less espera.txt & lanza el archivo en segundo plano [05:30].
Para revisar qué procesos tienes corriendo en background, usa jobs -l. Te lista los trabajos con su job ID, que es distinto del process ID.
Si quieres traer un proceso de vuelta al primer plano, ejecuta fg seguido del job ID. Por ejemplo, fg 1 recupera el primer trabajo en background.
Cómo pauso un proceso con Control + Z
La combinación Ctrl + Z envía el proceso activo al background pero en estado stopped. Esto significa que está pausado, no durmiendo.
Si lo verificas con htop (búsqueda con F3), verás la columna de estado con una T indicando stopped. Cuando lo traes de vuelta con fg, su estado cambia a S de sleep y vuelve a estar disponible.
¿Cómo termino procesos con kill y señales?
Linux usa señales para comunicarse con los procesos. La señal correcta depende del estado en que se encuentre el proceso que quieres terminar.
Cuándo usar kill, SIGTERM y SIGKILL
El comando kill por defecto envía la señal SIGTERM (identificador 15), que pide al proceso terminar de forma amigable. Funciona bien con procesos en foreground.
El problema aparece con procesos en background o stopped: SIGTERM no los mata. Ahí necesitas SIGKILL (identificador 9), que fuerza la terminación sin negociación [11:40].
kill 1402: envía SIGTERM al proceso con ese PID.
kill -SIGKILL 1478: fuerza terminación de un proceso en background.
kill -9 1478: misma acción usando el identificador numérico.
¿Cuál es la diferencia entre SIGTERM y SIGKILL? SIGTERM (15) pide al proceso terminar y le permite cerrar recursos. SIGKILL (9) lo mata inmediatamente sin darle oportunidad de limpiar nada.
Cómo matar procesos desde htop
Dentro de htop, presionar F9 abre un menú con todas las señales disponibles. Cada una tiene un identificador numérico que va del 0 en adelante.
Los más usados son el 15 para SIGTERM y el 9 para SIGKILL. Seleccionas la señal y htop la envía al proceso resaltado.
Cómo termino todos los procesos de un programa con killall
Cuando tienes varias instancias del mismo software corriendo, killall te ahorra tiempo. En lugar de buscar cada process ID, matas todos los procesos asociados a un nombre.
Por ejemplo, killall less termina todas las instancias de less que estén activas, sin importar si están en foreground, background o stopped [15:20].
¿Cuándo uso killall en lugar de kill? Usa killall cuando quieras terminar todas las instancias de un mismo programa por nombre. Usa kill cuando necesites terminar un proceso específico por su PID.
¿Para qué sirve manejar procesos en un servidor Linux?
Dominar estos comandos te permite mantener servidores corriendo procesos en segundo plano sin ocupar tu terminal, recuperar tareas cuando necesites interactuar con ellas, y terminar procesos colgados sin reiniciar el sistema completo.
Un caso típico: ejecutar el proceso de un servidor web en background mientras revisas logs en foreground, o forzar el cierre de un proceso bloqueado en estado D con SIGKILL.
¿Cuál de estos comandos vas a usar primero en tu servidor? Cuéntame en los comentarios qué proceso te ha dado más problemas para terminar.