Screen en Linux. Hacer que tus comandos sigan incluso cuando cierras tu conexión SSH

Ayer tenía un problema con un cliente. Ejecutaba un comando en un servidor, y el proceso iba a tardar mucho. Me refiero a varios días. Y claro, no puedo estar varios días conectado por ssh, en algún momento tengo que apagar mi ordenador, o desplazarlo de la oficina a mi casa. Entonces el comando se corta, y tendría que empezar de nuevo.

Entonces Víctor, nuestro técnico encargado de servidores, me presentó al comando screen (yo no lo conocía).  Screen está pensado para situaciones como esta, o para casos en los que, desde una misma conexión ssh, quieres abrir varios procesos que puedas ir monitorizando individualmente.

Screen abre “ventanas virtuales” , como nuevas conexiones dentro de una misma conexión.Lo bueno para el caso que nos ocupa, es que puedes hacer un detach: dejar esa pantalla activa y desconectarte, haciendo que siga el proceso. Puedes volver cuando quieras para ver cómo va o seguir ejecutando comandos ahí.

Comandos Screen:

  • Para abrir una ventana virtua simplemente escribe screen:
    root# screen
  • Ctrl-a ?          Ayuda de Screen 
    Ctrl-a c          Crear una nueva ventana virtual.  
    Ctrl-a ”          Lista navegable de ventanas abiertas 
    Ctrl-a Ctrl-n Cambiar a la venana Siguiente o Anterior 
    Ctrl-a Ctrl-N Cambiar a la Ventana N (de 0-9) 
    Ctrl-a x          Bloquear todas las terminales con una clave 
    Ctrl-a d          Hacer un Detach. Sales de la ventana pero la deja activa.  
    exit              Con esto cierras la ventana virtual de definitivamente.
    Ctrl-a S          Divide la ventana 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 
    Copiar en Screen
    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.
  • Para ver que sesiones de screen hay abiertas puedes poner screen -list
  • Para unirte a una sesión de screen abierta screen -r IDSESION
  • Para salir de una ventana pero dejar la sesión activa Ctr-a d.
    Puedes cerrar tu conexión y la sesión seguirá activa.
  • Para cerrar una sesión de screen, tras haber hecho el comando anterior, puedes poner
    screen -S IDSESION -X quit

    Por ejemplo

    screen -S 24365 -X quit
  • Si se te ha cortado la conexión, y vuelves, verás que tienes (con un screen -list) la sesión attached. Para poder conectarte de nuevo, tienes que hacer un

    screen -D IDSESION 
    Para hacer un Detach. Y luego volver a univerte con

    screen -r IDSESION 

Esperemos que os sirva, es un comando excelente para poder jugar y nos da mucha potencia a nuestro terminal. ¿Cómo no lo conocía?