Translate

jueves, abril 21, 2016

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.

Here’s the situation, you are using bash’s Screen command because you don’t want your flakey internet connection to affect whatever you are working on, and sure enough, the connection drops. Sometimes, when you try to re-attach to this screen session you are told that the screen session is still attached…

~$ screen -r '1234.somescreensession'
There is a screen on:
1234.somescreensession (Attached)
There is no screen to be resumed matching 1234.somescreensession.

How annoying.

UPDATE:
Here is a simple way to take back that screen session.

screen -D -r '1234.somescreensession'
Publicar un comentario