Screen - Utilizando Screen (I)

Introducción.

Screen es un multiplexor de terminales, que nos permite usar varias terminales virtuales, como si realmente estuviésemos accediendo a ellas físicamente. Es realmente útil cuando nos conectamos mediente ssh a algún servidor remoto. Con screen nos ahorramos el tener que abrir varias sesiones si tenemos la necesidad de, por ejemplo, visualizar un man, y ejecutar un comando al mismo tiempo. Aunque quizás su característica mas práctica es que todo lo que ejecutemos dentro de screen, seguirá ejecutándose aunque desconectemos, voluntaria o involuntariamente, del serv
idor. Por ejemplo, podemos acceder remotamente a un servidor, ejecutar "apt-get upgrade", y desconectar con tranquilidad para volver a conectar más tarde y ver como va la actualización.
Con Screen podemos crear tantas terminales como queramos a partir de una sola, conforme las vayamos necesitando.

NOTA:
C^ indica la tecla Control
Ej: C^a d indica Control+a d

Primeros pasos con screen.

En una terminal tecleamos:

~/$screen

y después de aceptar la licencia (GNU), obtenemos una terminal normal y corriente en la que podemos trabajar normalmente. Si queremos salir de screen teclearemos "exit", y screen se cerrará, pero algo más útil sería teclear "C^a d", que lo que hace es mandar esa terminal a background, dejando ejecutandose lo que haya en ella. En realidad a nivel interno Screen lo que hace es cerrar ese proceso, pero de momento dejamos esto de lado, por simplificar un poco y ya lo retomaremos mas adelante.

Para volver a entrar en screen teclearemos "screen -r". En el caso de que tuviesemos varias instancias de screen ejecutandose (no lo recomiendo) al teclear "screen -r" nos indica cuáles son, y debemos elegir una de ellas:

~/$screen -r

There are several suitable screens on:
8395.pts-4.host (Detached)
8415.pts-4.host (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.

~/$screen -r 8395

En la última línea le indicaríamos a screen que instancia debe devolvernos. También podemos indicarle a screen mediante el parámetro -S el nombre que queremos utilizar para esa instancia, por ejemplo si ejecutamos esto "screen -S administracion", para recuperar este screen, en el caso de que tuviesemos varios abiertos, tecleariamos "screen -r administracion".

Otra forma de lanzar screen es llamándolo con una orden como parámetro, por ejemplo, si tecleamos "screen vim /etc/passwd", nos abrirá vim en una nueva terminal, pero hay que tener en cuenta que al salir de vim, ese terminal se cerrará. Realmente screen siempre cierra la ventana cuando finaliza el proceso que se ejecuta en ella inicialmente, pero cuando la ejecutamos sin parámetros, el proceso inicial es Bash, por tanto no cierra la ventana hasta que tecleamos exit.

Trabajando con Screen.

Una vez hemos entrado en screen, tenemos varios comandos muy útiles para hacer mas eficiente la sesión.

Cada vez que necesitemos una nueva terminal tan solo tenemos que teclear "C^a c", y screen creará una nueva terminal. Esto no quiere decir que se cree un nuevo proceso screen, si no que añade una nueva ventana al proceso existente , y si ya no la necesitamos más, podemos cerrarla con "C^a k". Para ver una lista de todas las terminales que tenemos abiertas teclearemos "C^a "":

Num Name Flags
0 bash
1 bash $

Pero cuando tenemos varias terminales abiertas, esta lista puede ser poco descriptiva, por lo que podemos renombrar una terminal con el comando "C^a A" (A mayuscula). Si tenemos dos terminales abiertas, y las renombramos como "terminal1" y "terminal2" respectivamente, al teclear "C^a "" obtendremos:

Num Name Flags
0 terminal1
1 terminal2 $

Otra forma de cambiar rápidamente de terminal es presionando "C^a n" para pasar hacia delante, o "C^a C^p" para pasar hacia detrás.

Y una forma más de cambiar de terminal es tecleando "C^a '" y el número de la ventana, que podemos consultar en la lista de ventanas de "C^a "", o con "C^a N" que nos devuelve un mensaje con el número de terminal y su nombre.

Existen muchas mas opciones en screen, pero estas son las mas comunes, y las que generalmente se utilizan en el dia a dia.

Configurando Screen

Screen tiene dos archivos de configuración, "/etc/screenrc" para la configuración global, y ~/.screenrc para las configuraciones personalizadas. Por defecto el archivo ~/.screenrc no existe, pero podemos copiar /etc/screenrc en esa ubicación y retocarlo para dejarlo a nuestro gusto.

El archivo de configuración está bien documentado en el man, y la mayoría de las veces no hace falta retocar nada, así que solo comentaré una de sus secciones, la de Startup Screens.

En esta sección del archivo podemos automatizar el lanzado de aplicaciones cuando ejecutamos screen, por ejemplo, añadiendo la linea "screen -t recursos top", al ejecutar screen se nos abre una ventana de nombre "recursos" en la que se estará ejecutando top. Con el parámetro "-t recursos" le estamos indicando el nombre de la nueva ventana. Si lo omitimos, la nueva ventana por defecto tendrá el nombre de la aplicación que ejecuta.

Conclusiones

Screen es una potente utilidad que puede hacer mucho más productivo y eficiente nuestro tiempo, ahorrándonos múltiples ventanas si trabajamos en entorno gráfico, o dándonos una alternativa bastante potente al clásico Alt-F1 Alt-F2. Aquí he tratado de mostrar un uso básico y general de sus características, aunque tiene infinidad más, todas ellas bien documentadas en su man, o para una consulta rápida también nos puede servir "C^a ?", que nos mostrará una ayuda en pantalla con los comandos más frecuentes.

Escrito by SeT.

JID: setillo at jabberes.org
Email: set at criptoworld.com

screen -x

Hay una funcionalidad en screen que resulta muy útil: 'multi display mode'. Tal como dice la documentación, con 'screen -x' conectas a una sesión existente, pero sin desconectar a otras instancias que ya estén conectadas.

Consiste en que varias ventanas (posiblemente con personas distintas) están conectadas a la misma sesión. Todas ellas ven lo que las otras personas escriben, algo así como una consola de comandos colaborativa.

Esto resulta muy útil, por ejemplo, cuando un conocido tuyo tiene poblemas en su ordenador y no sabe como arreglarlo. Puedes conectar a su ordenador usando SSH y arreglarlo tu mismo. Si además quieres que él aprenda, viéndote qué comandos ejecutas en directo, basta con que inicies una sesión normal y que él se integre en ella con

screen -x

se agradece

Bueno, ya sé un poquito más de screen :)

nohup

screen es muy bueno. Si no hay screen en el servidor es possible de usar nohup tambien. No es un multiplexor como screen pero es possible de despachar un programa tambien después salir el servidor.

uso:
$ nohup programa