Dominar la gestión de procesos en Linux es una habilidad esencial para cualquier administrador de sistemas. Saber cómo un proceso pasa de estar activo a pausado, en espera o incluso en estado zombie, te permite controlar con precisión lo que ocurre en tu servidor y evitar problemas de rendimiento.
¿Cuáles son los estados de un proceso en Linux?
Cada proceso en Linux puede encontrarse en uno de varios estados bien definidos. Comprenderlos es el primer paso para gestionarlos correctamente.
¿Qué significa running, sleep y stopped?
- Running o runnable: el proceso está consumiendo recursos de CPU o memoria activamente [0:28].
- Sleep: el proceso entra en espera cuando no consume recursos. Existen dos variantes importantes [0:45]:
- Sleep no interrumpible (letra D): el proceso espera a que se liberen recursos y no puede ser terminado con señales comunes. Solo responde a la señal SIGKILL [1:20].
- Sleep interrumpible: puede finalizarse con cualquier señal estándar mientras está en espera.
- Stopped (letra T): el proceso está pausado manualmente. A diferencia del sleep, no regresará al estado running aunque haya recursos disponibles hasta que tú lo indiques [2:10].
- Zombie (letra Z): estado especial que se activa cuando un proceso se desvincula del proceso padre del cual fue heredado, por ejemplo init. Es la forma en que Linux evita conflictos al terminar procesos [2:30].
¿Cómo enviar procesos a background y foreground?
Una vez conectado al servidor, puedes trabajar con múltiples procesos de forma simultánea usando sesiones paralelas por SSH.
¿Cómo funciona el ampersand y el comando fg?
Para enviar un comando directamente al segundo plano, basta con agregar un ampersand (&) al final del comando [3:15]. Por ejemplo:
bash
less espera.txt &
Para ver los procesos en segundo plano se usa el comando jobs -l, que lista cada trabajo con su job ID y process ID [3:35].
Si necesitas traer un proceso de vuelta al primer plano, ejecutas fg seguido del identificador del trabajo [3:50]:
bash
fg 1
Otra forma muy práctica de enviar un proceso al background es presionar Ctrl + Z mientras está en foreground. Esto lo pausa y lo coloca en estado stopped [4:15]. Puedes verificarlo con htop buscando el proceso con F3.
¿Cómo terminar procesos con el comando kill y señales?
El comando kill es la herramienta principal para finalizar procesos. Por defecto envía la señal SIGTERM (identificador 15), que solicita una terminación amigable [6:10].
bash
kill 1402
Sin embargo, SIGTERM no funciona para procesos en background o en estado stopped. Para estos casos necesitas especificar la señal SIGKILL (identificador 9), que fuerza la terminación inmediata [6:45]:
bash
kill -SIGKILL 1478
O de forma equivalente, usando el número de la señal:
bash
kill -9 1478
Desde htop también puedes terminar procesos presionando F9, que despliega una lista de señales disponibles donde seleccionas la apropiada [8:00]. El identificador 15 corresponde a SIGTERM y el 9 a SIGKILL.
¿Qué hace el comando killall?
Cuando necesitas terminar todos los procesos asociados a un mismo programa, el comando killall resulta muy útil [9:10]. En lugar de usar el process ID, se indica el nombre del software:
bash
killall less
Esto elimina de un solo golpe cada instancia de less que esté corriendo en el sistema.
La gestión de procesos tiene aplicaciones tan amplias como puedas imaginar: desde mantener un servidor web corriendo en segundo plano hasta monitorear logs en primer plano. Lo fundamental es que sepas distinguir los estados, mover procesos entre background y foreground, y elegir la señal correcta para terminarlos. Si quieres profundizar, revisa la tabla de señales de Linux que complementa esta práctica y comparte en los comentarios cómo aplicas estos comandos en tu día a día.