Tutorial de screen

Jacobo Tarrío Barreiro

Versión 1.0, 16 de diciembre de 2000


Índice General

1 Introducción

1.1 Sobre el copyright

Copyright © 2000, Jacobo Tarrío Barreiro. El autor autoriza la copia y distribución de este documento, así como su modificación siempre que se cumplan las siguientes condiciones:

El simple cambio de formato del documento y/o las alteraciones en su maquetación, si el texto no se ve alterado, no se considera modificación a efectos de estas condiciones. Las traducciones sí que son consideradas modificaciones; se recomienda contactar con el autor para obtener permiso para incluir una versión traducida de la sección titulada ``Sobre el copyright''.

1.2 ¿Qué es screen?

screen es un programa que amplía las posibilidades de cualquier terminal, proporcionando terminales virtuales, cortar/pegar, scrollback y que además permite transferir sesiones entre distintos terminales1.

1.3 ¿Y quién ha escrito esto?

Soy Jacobo Tarrío2, miembro del Grupo de Programadores y Usuarios de Linux de A Coruña (España). Se me conoce por programas como... ehm... no, screen no... y... ... y muchos otros. Utilizo Linux desde marzo de 1997. Los que me conocen personalmente dicen que estoy un poco loco. Y los que no me conocen personalmente, también3.

2 Empecemos por el principio

2.1 Cómo conseguir screen

Puede bajar screen de cualquiera de estas direcciones:
ftp://ftp.uni-erlangen.de/pub/utilities/screen/
ftp://prep.ai.mit.edu/pub/gnu/

La última versión de screen en el momento en que se escribe esto es la 3.9.8, por lo tanto, el nombre del fichero es screen-3.9.8.tar.gz.

También, con toda seguridad, su distribución ya incluye screen. Al menos ése es el caso con Debian GNU/Linux y con FreeBSD4.

2.2 Cómo ejecutar screen

Una vez instalado screen, se puede ejecutar simplemente escribiendo screen en el prompt (indicador de comandos); así se ejecutará un nuevo intérprete de comandos. Para ejecutar un programa directamente, puede añadir el nombre de ese comando después de screen.

Para salir, sólo tiene que salir del programa o del intérprete de comandos que ha ejecutado bajo screen.

Es bastante seguro que al arrancar screen haya aparecido una pantalla con la licencia, etc. Para evitar esto5, sólo tiene que crear un fichero llamado .screenrc directamente en su directorio de usuario, que contenga esto:

startup_message off

3 Uso de screen (propiamente dicho)

3.1 La tecla de comando

Se puede acceder a todos los comandos de screen pulsando Control-A (de ahora en adelante, nos referiremos a las combinaciones de teclas del tipo Control-x como C-x). Por ejemplo, para ver la ayuda, pulse ? despues de C-a (o sea, pulse C-a ?). No se asuste por la gran cantidad de comandos; son muy sencillos6.

Si el programa que está usando también utiliza la tecla C-a, no hay problema. Pulse C-a a, y asunto solucionado7.

3.2 Consolas virtuales en el puerto serie. En serio

Mediante consolas virtuales, es posible tener varias sesiones abiertas en el mismo terminal, para, por ejemplo, poder navegar y programar al mismo tiempo y en el mismo terminal8.

Como he dicho antes, con screen es posible crear y utilizar consolas virtuales, incluso sobre un simple terminal serie. Éstas se crean pulsando las teclas C-a c. Una vez hecho esto, puede navegar entre las distintas consolas virtuales, pulsando C-a p para ir a la consola virtual anterior, o C-a n para ir a la siguiente.

¡Pero eso no es todo! Tambien es posible cambiar entre las distintas consolas virtuales directamente, pulsando C-a y un número de 0 a 9. Y por contraintuitivo que parezca, la consola virtual número cero es la primera consola virtual.

Se puede ver el listado de las consolas virtuales que están abiertas, pulsando C-a w. Aparecerá un listado similar a:

0*$ bash  1$ bash  2-$ bash  3$ bash

La consola virtual marcada con el asterisco es la activa, y la que tiene el guión (-) es la que estaba activa antes que la actual.

Tambien es posible dividir la pantalla en dos partes9, con C-a S. Se puede conmutar entre ambas partes de la pantalla, con C-a C-i, y para volver a dejar la pantalla ``entera'', ha de pulsarse C-a Q.

3.3 Scrollback, o lo que ya se ha escapado de la pantalla

Una cosa maravillosa que tiene la consola de Linux es el scrollback: esa característica por la que podemos, pulsando Mayúsculas-RePág, ver las cosas que se fueron desplazando hacia arriba, desapareciendo por la parte superior de la pantalla. Es algo que se echa mucho de menos cuando se utilizan terminales que no disponen de ello.

Por supuesto, screen incluye un scrollback; para utilizarlo, pulse C-a [. Mueva el cursor para moverse por el buffer, y cuando termine, simplemente pulse ESC o [.

3.4 Cortar y pegar

Al entrar en el scrollback, habrá visto un mensaje que pone algo similar a:
Copy mode - Column 30 Line 24(+100) (80,24)

Como supondrá, esto significa que el scrollback se utiliza también para copiar10.

Si está en el scrollback, puede seleccionar un texto que aparezca en pantalla - o en el scrollback - para copiar, y posteriormente pegar en el momento que desee. Para eso, mueva el cursor (el bloque en vídeo inverso) hasta la posición en que comienza el texto, y pulse Intro. Después, desplace el cursor hasta la posición del final, y vuelva a pulsar Intro.

Después, puede pegar el texto que ha copiado, como si lo escribiese en el teclado. Para esto, sólo tiene que pulsar C-a ].

Fácil, ¿no? C-a [ para copiar, C-a ] para pegar11.

3.5 Desconectar y conectar screen al terminal

Una de las características más asombrosas de screen es la posibilidad de pasar sesiones abiertas de un terminal a otro, o de desconectar una sesión, salir del ordenador, entrar más tarde y recuperar la misma sesión, sin cerrar los programas12.

Puede desconectar del terminal la sesión que está utilizando, pulsando C-a d. Para confirmar que esto ha ocurrido, aparecerá la palabra [detached].

Para volver a conectar esa sesión a un terminal, ya sea el mismo terminal u otro terminal distinto, utilice el comando screen -r. Si tiene varias sesiones desconectadas, screen le mostrará un listado de tales sesiones:

There are several suitable screens on:
    10755.pts-1.elvin   (Detached)
    14266.pts-3.elvin   (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.

Si desea recuperar la segunda sesión de esta lista, sólo necesita teclear screen -r 14266.

Puede desconectar una sesión desde un terminal distinto de aquel en el que corre la sesión13, mediante el comando screen -d. Por ejemplo, si tiene una sesión abierta en la consola, y está accediendo a través de Internet, y quiere recuperar esa sesión, puede escribir screen -d para desconectar esa sesión, seguido de screen -r para conectarla al terminal actual. Esto se hace tan a menudo, que se puede hacer con un solo comando: screen -dr.

Igualmente, si desea desconectar una sesión, y hay varias conectadas, verá una lista en pantalla:

There are several suitable screens on:
    10755.pts-1.elvin   (Attached)
    14266.pts-3.elvin   (Attached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.

Para desconectar la segunda sesión de la lista, teclee screen -d 14266.

Finalmente, también es posible dejar una sesión desconectada. Si, por ejemplo, está leyendo el correo14 y debe irse, pero no quiere cerrar el lector de correo y tampoco quiere dejar un terminal abierto, puede desconectar la sesión y luego cerrar el terminal como siempre. Cuando regrese, puede abrir el terminal de nuevo, teclear screen -r, con un número, si es necesario, y continuar con lo que estaba haciendo.

3.6 Grabaciones de pantalla

Es posible volcar todo lo que vaya apareciendo en pantalla en un fichero. Así, se puede visualizar más tarde el contenido de ese fichero, viendo todo lo que apareció en esa pantalla.

Para empezar el registro, pulse C-a H. Para detenerlo, pulse C-a H otra vez. El registro estará grabado en un fichero llamado screenlog seguido de un punto y un número15.

También puede hacer una captura, como una foto, de la pantalla en el momento actual, pulsando C-a h. La captura se almacena en el fichero con nombre hardcopy, seguido de un punto y un número.

3.7 Bloqueo de terminal

Si necesita irse brevemente, puede bloquear el terminal, pulsando C-a C-x. Este comando desconecta la sesión del terminal actual, y ejecuta el programa estándar de bloqueo de terminales. Cuando se regrese del programa, screen vuelve a conectar la sesión al terminal.

La efectividad de este comando es discutible si tiene otro terminal abierto y sin bloquear - cualquiera podría escribir screen -r en ese otro terminal y hacer lo que quisiera. Para evitarlo, puede poner una contraseña, añadiendo previamente este comando a su fichero  /.screenrc:

password H9/f2I2kL

Sustituya H9/f2I2kL por una contraseña cifrada mediante DES. Puede obtener una de su fichero de contraseñas del sistema, o puede hacer que screen le proporcione una16. Para eso, pulse C-a : y teclee password. screen le pedirá una contraseña, dos veces, y luego la pondrá disponible para pegarla, mediante C-a ].

4 Para terminar

Cuando Manty me contó los problemas que tenía con su terminal serie, le sugerí que usara screen, y por ahora no se ha arrepentido17. Me sorprende que un programa tan útil sea tan poco conocido, y por eso he escrito este artículo.

Utilizo un sistema de control de versiones en la edición de este artículo. Este sistema de control de versiones produce números de versión que no tienen nada que ver con la versión ``real'' del artículo (que actualmente es la 1.0). También, cada versión tiene un identificativo; el identificativo de la versión actual es:

Id: screen.tex,v 1.11 2000/12/16 14:26:36 jtarrio Exp

En mi página web personal puede mirar si hay una versión más actualizada. La URL es http://tarrio.cjb.net/

4.1 Revisiones de este documento

-
Versión 1.0, 16 de diciembre de 2000: Versión pública inicial.
-
Versión 0.9, 8 de diciembre de 2000: Borrador inicial.



Notas al pie

... terminales1
Y tambien proporciona emulación VT100, por si las otras características eran pocas.
...io2
Eso salta a la vista.
... tambi\'en3
Hay una gran cantidad de notas al pie en este artículo. Generalmente, representan el flujo de mi pensamiento saltarín.
... FreeBSD4
Esto es poco significativo, pues Debian y FreeBSD no son precisamente las distribuciones que menos software incluyen, cada una en su campo.
... esto5
Las licencias del software son importantes, pero tampoco tanto como para obsesionarse.
... sencillos6
Esta afirmación es similar a aquellos entrañables momentos en los que el Gobierno nos dice que podemos estar tranquilos, pero el autor, en este caso, lo dice de verdad.
... solucionado7
Ojalá todos los problemas se solucionaran así de fácilmente.
... terminal8
No exactamente a la vez, por supuesto, aunque se dice que algunas personas son capaces de programar en C y jugar al Quake a la vez. Sin embargo, mucha gente (entre la que me incluyo) es escéptica. Seguro que se ayudan de la nariz, o algo.
... partes9
Seguro que esto viene de maravilla para programar en C y jugar al Quake, tal como dije antes.
... copiar10
Está en lo cierto. El scrollback no es más que el modo de selección para copiar, pero con un nombre curioso, para que parezca más cosa.
... pegar11
Qué fácil. Tendrían que haber inventado screen en la época de las máquinas de escribir.
... programas12
Este humilde servidor de Dios y de ustedes lo utiliza para abrir el IRC en consola, y, si más tarde necesita entrar en X, sólo tiene que abrir una xterm y trasladar la sesión de IRC a esa xterm.
... sesi\'on13
Muy útil, cuando un ssh se queda tonto - quien dice ssh también dice telnet, con la diferencia de que nadie en su sano juicio permitiría accesos por telnet a uno de sus ordenadores.
... correo14
O hablando por IRC, que de todo hay que hacer.
... n\'umero15
Si visualiza el contenido del fichero, con el mismo comando cat, verá todo lo que ha ocurrido, como en una película. Ideal para un día de invierno.
... una16
Mucho más recomendable.
... arrepentido17
Al menos no se queja en voz alta.


Jacobo Tarrio 2000-12-16