The Code Ninja’s Toolkit (II): Screen

Después de hablar sobre checkinstall, no podía dejar de nombrar a uno de los programas mas útiles pero menos conocidos y mas desaprovechados del mundo GNU/Linux, screen.

Imprescindible entre las herramientas de todo code-ninja, su primera funcionalidad, y la menos impresionante, es la de trasladar el concepto de los espacios de trabajo a la consola. Es decir, nos permite abrir mas de una sesión de consola dentro de la misma terminal; lo cual no es demasiado espectacular, ya que no está demasiado lejos de la funcionalidad que nos proporciona una terminal con pestañas.

Si ejecutamos screen en una terminal, tras mostrarnos un mensaje de bienvenida, volveremos a tener una consola limpia de forma que a primera vista podría parecer que no ha pasado nada. Sin embargo, si pulsamos la combinación de teclas Control + A, y después Control + C, crearemos una nueva sesión, una consola distinta, de forma que en una de ellas podemos tener corriendo vim, en otra lynx y en otra estar compilando un programa, todo dentro de la misma ventana de terminal. Podemos crear todas las consolas que queramos, y movernos facilmente entre ellas con «Control + a, n» (next, siguiente) o «Control + a, p» (previous, anterior) o indicando el número de la consola con «Control + a, número«.

Sin embargo, como ya habíamos comentado, esta no es la funcionalidad mas útil e interesante de screen. Lo que mas suele sorprender a la hora de empezar a utilizar screen es su capacidad para vincular y desvincular estas consolas virtuales de la terminal en la que fueron creadas.

Veamos un ejemplo. Supongamos que empiezo a editar un texto en la universidad; si desvinculo esta consola de la terminal (bien cerrando la terminal o bien con la combinación Control + a, d), el programa continuará ejecutándose, en una especie de limbo de las consolas (si han sido malas consolas se reencarnan en una consola de ms-dos), ya que no está vinculada a ninguna consola real. Una vez que llego a casa, puedo vincular esas consolas virtuales a una terminal que abra en mi pc (con el comando screen -r), recuperando las consolas que tenía abiertas en el otro pc, y los programas abiertos, que nunca dejaron de ejecutarse.

Resumiendo, screen nos permite crear consolas virtuales, que son virtuales hasta el extremo de que pueden existir sin estar ligadas a una ventana de terminal e incluso de poder «transportarse» de una terminal física a otra, lo cual, lo convierte en un programa cuanto menos interesante y muy útil para fanáticos de la consola.

4 comentarios en «The Code Ninja’s Toolkit (II): Screen»

  1. Lo de desvincular y recuperar es utilísimo, puedes estar en un tty haciendo tus cosas, desvincular, y hacer logout. Y después desde otro ordenador conectarte por ssh y seguir tranquilamente.

    Otra cosa muy útil es que permite copiar y pegar en terminales «de verdad».
    Vamos, que con el screen, el mp3blaster, el vim y el elinks/lynx/w3m me río yo de las GUIs 😀

  2. Sin duda lo mejor de screen es el detacheo y reatacheo (dios, que mal hablo xD) pero se pueden incluir otras que lo hacen imprescindible:

    – ctrl+a+A: para ponerle un nombre a la ventana, útil para acordarnos de qué estábamos haciendo en esa ventana y no cambiar por error a una terminal que no queríamos. Acelera las cosas un poco más.

    – ctrl+a+[: el mega buffer. Probad esto y usad los cursores para subir por el buffer. Es la caña. A la hora de copiar y pegar viene genial (cambiando el «[» por «]» pegamos y podemos salir del modo copia pulsando ESC).

    – ctrl+a+_/M: monitorizar/desmonitorizar una ventana de screen

    Otra cosa que mola es el logfile (antiguo logdir)

    Y para rematar un par de opciones básicas para añadir al screenrc:

    vbell on
    autodetach on

    La primera para no oir al speaker (si tienes un 2.6 igual ya ni lo oyes de todas formas) y la segunda para que se autodetachee cuando hay un timeout en una sesión remota.

    No recuerdo los años que llevo usando screen pero lo que si sé es que es la primera aplicación que compruebo que esté instalada en la máquina en la que me toca trabajar (aparte de vim, claro).

    Un beso 🙂

Responder a David Cancelar respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.