Ejecutar procesos después de cerrar sesión
A veces necesitas que un proceso siga ejecutándose incluso después de cerrar sesión en la terminal. El comando nohup
te permite ejecutar un comando que seguirá ejecutándose incluso después de salir de la shell.
Vamos a crear un script que se ejecutará durante mucho tiempo:
cd ~/project
nano persistent-task.sh
Agrega el siguiente contenido:
#!/bin/bash
## Este script se ejecuta durante un tiempo muy largo
echo "Starting persistent task at $(date)" > persistent-output.log
for i in {1..100}; do
echo "Iteration $i at $(date)" >> persistent-output.log
sleep 10
done
echo "Persistent task completed at $(date)" >> persistent-output.log
Guarda y sal de nano, luego haz el script ejecutable:
chmod +x persistent-task.sh
Ahora, ejecútalo con nohup
y ponlo en segundo plano:
nohup ./persistent-task.sh &
Verás una salida similar a:
[1] 5678
nohup: ignoring input and appending output to 'nohup.out'
Esto significa que el proceso se está ejecutando en segundo plano y seguirá ejecutándose incluso si cierras sesión. La salida que normalmente iría a la terminal se redirige a un archivo llamado nohup.out
.
Puedes verificar si el proceso se está ejecutando:
ps aux | grep persistent-task.sh
Y puedes examinar el archivo de salida:
cat persistent-output.log
La salida muestra la hora de inicio y las iteraciones de la tarea persistente.
El comando disown
Otra forma de mantener los procesos en ejecución después de cerrar sesión es utilizar el comando disown
. Primero, ejecuta un proceso en segundo plano:
cd ~/project
./persistent-task.sh &
Luego utiliza disown
para desvincularlo de la terminal:
disown %1
Ahora este proceso seguirá ejecutándose incluso si cierras la terminal.
Estos comandos son esenciales cuando se ejecutan tareas en servidores remotos donde se necesita que los procesos continúen después de desconectarse.