Imagínate que eres un administrador de sistemas Linux que trabaja desde un equipo Windows y usas Putty para conectarte a los servidores Linux, y dejas una terminal descargando esa nueva y fantástica distro, y esto va a tomar varias horas. En la tarde que ya te vas a casa, solo llevas un avance de un 20% digamos, en el transcurso de la noche terminará la descarga, asi que no apagas tu equipo Windows porque al apagarlo se pierde la terminal y la descarga. Te vas muy confiado, pero resulta que tu acomedido compañero al ver que dejaste la computadora prendida, la apague, y ni hablar, al otro día volver a iniciar la descarga donde se quedó.

Es un ejemplo sin importancia, porque pudo ser algo grave, como la ejecucción de un respaldo, la réplica de una base de datos, una comprobación del sistema de archivos, etc.

Al rescate llega screen que es una utilería que permite multiplexar una terminal, crear una terminal virtual a partir de una existente y después esta terminal virtual ser “llamada” desde otras terminales o desde el servidor junto con el programa que se este ejecutando.

Lo anterior quiere decir, siguiendo con el ejemplo, que te conectas via putty al servidor, desde la terminal ejecutas screen, que abrirá otro shell, desde este shell ejecutas la descarga (o el programa que quieras), te sales de screen y te sales de putty, apagas la computadora, y al otro día te reconectas a la terminal virtual, y listo, tendrás de nuevo la terminal donde esta se encuentre ejecutándose en ese momento, como si nunca la hubieras cerrado.

Su uso es muy fácil, estando en la línea de comandos o shell de cualquier terminal local o remota, teclea:

$ screen

Con este comando creamos un nuevo shell virtual donde podemos ejecutar algún proceso largo y cerrar completamente esa terminal sin miedo a que se interrumpa el proceso que dejamos en funcionamiento.

Ahora desde una nueva terminal ejecuta lo siguiente para observar la lista de terminales virtuales:

$ screen -ls
There is a screen on:
	21432.pts-2.g3xlap (Attached)
1 socket in /var/run/screen/S-root.

Lo que nos indica que tenemos una terminal virtual ejecutándose. Cada terminal virtual recibe un número, por lo que entonces desde cualquier otro equipo o en el mismo servidor, a través de una terminal (telnet, ssh, local), será posible invocar de nuevo estas terminales virtuales, tan solo basta la opción -r:

$ screen -r 21432

Sólo basta indicar el número asignado de la terminal virtual, si no hubiera más que una sola terminal virtual bastaría con indicar la opción -r sin número.

Y básicamente es todo, una vez en la terminal virtual puedes seguir trabajando en ella. Esta herramienta es extremadamente útil y puede salvarnos de situaciones como las citadas al principio del post.

Vía: http://www.linuxtotal.com.mx por Sergio González Durán.