¿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.