Jugando con screen, un manejador de sesiones Linux

El otro día, en el trabajo, me recomendaron el uso de screen para manejar terminales Linux, así que me puse a investigar de que se trataba.

GNU Screen es una herramienta destinada a la terminal de Linux con la que se puede crear y manejar varias sesiones y programas de manera simultanea desde una sola terminal.

Pero además, permite cerrar la terminal y volverse a conectar a la sesión de screen que conservará las "terminales virtuales" que tuviéramos abiertas.

Aquí dejo su sintaxis de ejecución y algunas de sus opciones más útiles. Más adelante veremos como manejarse una vez lanzada una sesión.

$ screen -S nombreDeLaSesion

# OPCIONES
# -S sockname     Da nombre a la sesión [pid].sockname.
# -ls             Lista las sesiones abiertas de screen.
# -r              Reattach a un sesión. Es posible especificar el nombre
                  ej: screen -r sockname
# -t título       Permite dar un título a una ventana.

Creando una nueva sesión de screen

$ screen -S nginxSetup -t virtualHost

Con este comando creamos una nueva sesión de screen (nginxSetup) con una nueva ventana (virtualHost). En una sesión de screen podemos crear multiples ventanas.

$ screen -t startScript

Dentro de una sesión

Estas son algunas de las combinaciones posibles para manejarse dentro de una sesión de screen.

Manejo de las ventanas

Con estas combinación de teclas nos podemos desplazar por las ventanas creadas con screen -t.

Ctrl-a ?          Ayuda y sumario de funciones
Ctrl-a c          Crear una nueva ventana (sin nombre).
Ctrl-a Ctrl-n     Cambiar a la Siguiente o Anterior terminal
Ctrl-a Ctrl-N     Cambiar a la Siguiente o Anterior terminal N [0-9]
Ctrl-a ”          Lista navegable de terminales en funcionamiento
Ctrl-a a          Limpiar un Ctrl-a pulsado por error
Ctrl-a Ctrl-d     Desconectar y dejar la sesión en funcionamiento
Ctrl-a x          Bloquear todas las terminales con una clave
Dividir screen
Ctrl-a S          Divide horizontalmente
Ctrl-a tab        Salta a la siguiente zona
Ctrl-a X          Cerrar la zona actual
Ctrl-a Q          Cerrar todas las zonas excepto la actual
Salir de screen
Ctrl-a d          Dettach. Sale de la sesión pero la deja en segundo plano 
                  junto a todas sus ventanas.
exit              Cierra la ventana actual. Cerrando todas las ventanas
                  se cierra la sesión de screen.
Opciones de copiado
Ctrl-a + [      Entrar en modo copia/scroll.
Enter           Comenzar la selección de texto / Finalizar la selección 
                de texto, copiar y salir modo copia/scroll.
Cursor          Desplazamiento del cursor selecciona el texto a 
                copiar (si estamos en modo copia/scroll).
ESC             Salir del modo copia/scroll sin copiar nada.
Ctrl-a + ]      Pegar el texto copiado.

Desde luego una herramienta muy poderosa y muy útil para trabajar con terminales Linux.