¿Cómo ejecuto programas en background?
En un servidor unix o linux se pueden mandar programas a background y desligados de la sesión usando el comando nohup:
$ nohup micomando &
Esto ejecuta micomando de tal forma que puedes salir de sesión sin que se corte el programa. La salida a pantalla del programa se guardará en el archivo nohup.out del directorio donde se ejecute.
El programa así ejecutado no deberá requerir interacción con el usuario.
Puedes revisar el estado del programa usando el comando ps
$ ps -fea | grep micomando
Más información:
$ man nohup
También se puede usar el comando screen.
$ screen
Al iniciar screen, aparece un sub-shell, conocido como screen. En éste puedes ejecutar los comandos que desees. Si quieres desligar ese screen de la sesión debes teclear Ctrl-a d
, lo que te regresa al primer shell y aparece el mensaje:
[detached]
Después de eso puedes salir de sesión, los programas seguirán ejecutándose.
Para ver qué screens se están ejecutando, puedes ejecutar el comando screen con la opción -list, desde la misma sesión o desde una nueva:
$ screen -list There is a screen on: 27359.pts-289.xibalba (Detached) 1 Socket in /tmp/uscreens/S-ajhernan.
Para retomar el control de un screen, puedes usar la opción -r con el argumento del identificador de la sesión:
$ screen -r 27359.pts-289.xibalba
Esto regresa al screen. Si hay un programa corriendo regresa al punto de ejecución de ese programa.
Para salir de un screen debes teclear exit
, después de lo cual aparece el mensaje:
[screen is terminating]
Más información
$ man screen
En un servidor Unix o Linux se puede programar la ejecución de comandos en background para una hora o fecha posterior usando el comando at.