Autonomía digital y tecnológica

Código e ideas para una internet distribuida

screen: ejecutar un comando en Linux y dejarlo corriendo tras cerrar la sesión

Imago voragine.net

GNU screen es un programa que permite gestionar varias sesiones en la línea de comandos en paralelo: permite crear terminales virtuales en la línea de comandos, visualizarlas al mismo tiempo en un mosaico, saltar de una a otra y crear varios mosaicos. Funciona como un gestor de ventanas en la línea de comandos. También sirve para lanzar un comando y dejarlo corriendo cuando se cierra la sesión.

Usar screen es muy fácil. Tiene muchas posibilidades. Aquí recojo únicamente las necesarias para abrir una sesión, desconectarse y reconectarse a ella, y finalizar la sesión.

Yo lo uso para lanzar procesos en máquinas remotas que tardan varias horas en ejecutarse. Hacer esto permite conectarse a una máquina remota, lanzar el proceso, desconectarse y dejarlo corriendo, y reconectarse más tarde para ver cómo va.

Iniciar una sesión con screen en una máquina remota

usuarios@maquina_local:~$ ssh usuario@maquina_remota
usuario@maquina_remota:~$ screen -S nombre_sesion

El modificador -S permite asignar un identificador a la sesión. Es útil para volver a conectarse a esta sesión si se tienen varias sesiones screen activas.

Desconectarse de la sesión iniciada y de la máquina remota

Una vez la sesión de screen esté iniciada se pueden ejecutar las ordenes que se quieran, por ejemplo una orden que vaya a tardar varias horas en completarse. Mientras se está ejecutando la orden, es posible desconectarse de la sesión activa de screen pulsando la combinación de teclas CTRL+a d. La sesión seguirá activa una vez que el usuario se haya desconectado de ella. En este momento podemos también cerrar la conexión ssh con la máquina remota:

usuario@maquina_remota:~$ orden
Ejecutando "orden"...
CTRL+a d
[detached from nombre_sesion]
usuario@maquina_remota:~$ exit
logout
Connection to maquina_remota closed.
usuario@maquina_local:~$

Volver a conectarse a una sesión iniciada en la máquina remota

En cualquier momento, para ver cómo va la ejecución de la orden que se ha lanzado en la máquina remota, dentro de la sesión de screen, nos podemos volver a conectar:

usuario@maquina_local:~$ ssh usuario@maquina_remota
usuario@maquina_remota:~$ screen -r nombre_sesion

Cerrar una sesión de screen

Si el trabajo en marcha dentro de la sesión de screen acabó, se puede cerrar la sesión con la combinación de teclas CTRL+a k:

usuario@maquina_remota:~$ orden
Ejecutando "orden"...
La ejecución finalizó sin errores.
usuario@maquina_remota:~$
CTRL+a k
[screen is terminating]
usuario@maquina_remota:~$ exit
logout
Connection to maquina_remota closed.
usuario@maquina_local:~$

Dejar un comentario

No hay comentarios en esta entrada.
*
*

 

No hay trackbacks