Ejecutar tareas en segundo plano con el comando screen en Ubuntu / Debian

¿Cuantas veces nos hemos encontrado con la situación en la que estamos conectados a un servidor a través de SSH y queremos dejar una tarea en ejecución y desconectarnos? Muchas veces se suele mantener la sesión SSH activa y volvemos a las horas con el miedo de que la tarea no se haya ejecutado correctamente. Otras veces queremos ejecutar una tarea y no nos apetece volver a abrir otra conexión SSH con el servidor para continuar realizando otras tareas, pero no nos queda mas remedio que realizarlo.

En estos casos, nuestro gran aliado es el comando screen. El comando screen es un gestor de ventanas que permite multiplexar  una terminal física entre múltiples procesos, generalmente shells interactivas. En primer lugar será necesario verificar si el comando screen está instalado. Para instalar el comando screen se ejecutará el siguiente comando:

sudo apt-get install screen

Posteriormente se ejecutará el comando a ejecutar "aquel que queremos que se ejecute durante un periodo largo de tiempo" de la siguiente forma:

screen

ej

screen watch ls

Al ejecutar el comando de esta forma, se nos mostrara la ejecución del comando en pantalla.

ejecución del comando a través de screen

Una vez que el comando se está ejecutando, si queremos dejarlo en segundo plano será necesario ejecutar la siguiente combinación de teclas:

CTRL + A + D

Nota: No hay que pulsar la tecla +. La tecla + indica que es una combinación de teclas

Ahora ya se puede cerrar la sesión SSH que el comando seguirá ejecutándose. Para recuperar la ventana virtual donde se ejecuta el comando, primero será necesario conocer que identificador le ha dado screen a la ejecución de comando. Para ello, será necesario ejecutar la siguiente sentencia:

screen -ls

Empleando el ejemplo que se está empleando en este post, el sistema nos devuelve la siguiente información:


Para recuperar la ejecución en segundo plano se ejecutará el siguiente comando:

screen -r

ej:

screen -r 3679.pts-0.enterprise

Finalmente, solo será necesario cerrar la ventana virtual "Una vez que nos encontremos dentro de ella", para la cual pulsará la siguiente combinación de teclas:

CTRL + A

Tras pulsar dicha combinación, se escribirá lo siguiente en la terminal:

:quit

Posteriormente se confirmará la salida mediante la pulsación de la tecla enter.