Para el desarrollo web es imprescindible conectarse a servidores remotos, ya sea para configurar, instalar, o administrar la aplicación. Un comando que creo que es imprescindible para estas tarea es screen.

¿Que es Screen?

Explicar que es o que hace éste comando es especialmente complicado, por ejemplo si miramos la documentación la descripción no es nada esclarecedora:

Screen es un gestor de ventanas a pantalla completa que multiplexa una terminal física entre varios procesos, normalmente shells interactivos.

Quizá sea mejor describir cuales con sus capacidades:

  • Mantener la sesión de shell activa aunque pierdas la conexión.
  • Desconectar de una sesión de shell y conectarse a la misma sesión más tarde, desde el mismo ordenador u otro distinto.
  • Usar varios shells en la misma sesión SSH.
  • Ejecutar procesos largos y cerrar la sesión para conectar cuando termines.

Instalación

Instalación como siempre con apt-get en Debian y derivados:

secnot@servidor:~# sudo apt-get install screen

Iniciar Screen

Escribe screen en la linea de comandos, tras mostrar una pagina con información de la versión de screen, volverá a un shell:

secnot@servidor:~# screen

Comandos de Screen

Screen se controla a base de la combinación de teclas "Ctrl-a" seguido de otros símbolos o letras. Para dejarlo claro eso es pulsar la tecla control y a minúscula al mismo tiempo. Una vez iniciado screen puedes mostrar todas la combinaciones pulsando "Ctrl-a" seguido de "?"

                      Screen key bindings, page 1 of 2.

                     Command key:  ^A   Literal ^A:  a

break       ^B b         license     ,            removebuf   =
clear       C            lockscreen  ^X x         reset       Z
colon       :            log         H            screen      ^C c
copy        ^[ [         login       L            select      '
detach      ^D d         meta        a            silence     _
digraph     ^V           monitor     M            split       S
displays    *            next        ^@ ^N sp n   suspend     ^Z z
dumptermcap .            number      N            time        ^T t
fit         F            only        Q            title       A
flow        ^F f         other       ^A           vbell       ^G
focus       ^I           pow_break   B            version     v
hardcopy    h            pow_detach  D            width       W
help        ?            prev        ^H ^P p ^?   windows     ^W w
history     { }          quit        \            wrap        ^R r
info        i            readbuf     <            writebuf    >
kill        K k          redisplay   ^L l         xoff        ^S s
lastmsg     ^M m         remove      X            xon         ^Q q

                [Press Space for next page; Return to end.]

Desligar la sesión de Screen

Una vez has iniciado screen y estas por ejemplo descargando un archivo, compilando código, o cualquier otra tarea lenta, puedes desligar la sesión para volver a reconectar cuando ésta termine. Simplemente pulsa la combinación de teclas "Ctrl-a" "d" y te aparecerá el mensaje:

[detached from 4617.pts-0.servidor]
secnot@servidor:~#

Religar a la sesión de Screen

Para reconectar a una sesión que ha sido desligada, ya sea porque has tenido un corte de conexión o porque lo hiciste intencionadamente, sólo tiene que escribir en la linea de comandos:

secnot@servidor:~# screen -r

Si hay mas de una sesión disponible necesitas proporcionar el identificador de la sesión a la que quieres conectarte, puedes obtener una lista de las sesiones con:

secnot@servidor:~# screen -ls

Y luego reconectar usando screen -r seguido de la sesión deseada:

secnot@servidor:~# screen -r 4617.pts-0.servidor

Detener screen

Una vez has terminado de trabajar puedes cerrar screen de dos manera, la primera usando el comando exit para cerrar la terminal hasta que te aparezca el mensaje [screen is terminating]. La alternativa es usar la combinación de teclas "Ctrl-a" "x", que debería mostrarte un mensaje de confirmación en el que debes pulsar y.


comments powered by Disqus