sudo apt-get install screen
Las sesiones de UNIX/LINUX son normalmente terminales remotos que se consumen mediante un cliente de terimnal remoto (Putty), normalmente cuando la comunicacion entre el servidor y el terminal remoto se suspende ya sea por un problema de conexion, o porque el usuario equivocadamente cierra la ventana. Siempre que se suspende la conexion el sistema operativo detiene todos los procesos que estan corriendo sobre ese terminal por seguridad.
Existen muchos casos donde es necesario dejar ejecutando un proceso largo, o dejarlo corriendo de manera indefinida y no es posible mantener una conexion permanentemente abierta con el servidor. GNU Screen permite abrir una sesion con el servidor, poder dejarla corriendo como un proceso de fondo, permitiendo asi poder cerrar el terminal (putty), y en un momento mas adelante poder volver a recuperar dicha sesion.
Adicionalmente GNU screen, no esta limitado a abrir una sola sesion para resumirla, se puede abrir multiples sesiones, permitiendo que el usuario del terminal pueda operar sobre muchos terminales en el servidor en paralelo, inclusive con la modalidad de multiples "ventanas" sobre el mismo espacio de pantalla, permitiendo simular el espacio visual de un sistema operativo moderno que incluye copiar y pegar entre terminales, nombrar terminales, administrador de tareas, detener a la fuerza un terminal entre otros.
Advertencia: Por favor tener en cuenta que este manual presenta muchas combinaciones de teclas, y estas combinaciones utilizan tanto caracteres especiales . Estas combinaciones depronto pueden pasar desapersividas por el lector, suponiendo que son un errores de este texto. Igualmente las combinaciones de teclas toma en cuenta la diferencia entre mayusculas y minusculas, asi que por favor mucho cuidado. En caso de que no le fucione una combinacion de teclas, es posible que este omitiendo alguna de esta advertencias.
Iniciar una sesion con el servidor con un terminal remoto (putty)
Crear una sesion de GNU screen:
screen -S nombre_de_la_sesion
ejecutar el comando que se desea que corra en proceso de fondo
desadjuntar (dettach) la session del terminal fisico
[CTRL]+[a]
[d]
cerrar session con el terminal remoto (putty)
listar las sesiones que estan corriendo en fondo actualmente (si es que las hay):
screen -list
del listado escojer el nombre de sesion que se desea recuperar y despues ejecutar el comando:
screen -r nombre_de_la_sesion
Cuando ya se tenga creada una sesion de GNU screen, para crear un terminal se presiona:
[CTRL]+[a]
[c]
Inmediatamente aparecera un nuevo terminal; el terminal anterior no se ha perdido, simplemente esta trabajando como proceso de fondo, para pasar a ese terminal anteior nuevamente solo es presionar:
[CTRL]+[a]
[n]
o
[CTRL]+[a]
[p]
o tambien
[CTRL]+[a]
[SPACEBAR]
Nota: En las combinaciones de tecla anteriores las letras usadas significan:
Abrir el listado de terminales abiertos:
[CTRL]+[a]
["]
Seleccionar con las flechas el terminal que al que se desea pasar y para confirmar
[ENTER]
Normalmente los terminales cuando son creados todos quedan con el nombre BASH, lo cual hace que sea dificil identificarlos en el listado de terminales abiertos. Para solucionar este problema existe la funcionalidad de cambiarle el nombre al terminal actualmente abierto asi:
Ubicarse sobre el terminal al cual se le desea cambiar el nombre
Abir la linea de edicion de nombre de terminal:
[CTRL]+[a] [A]
Para este ejercicio es necesario que exista en la sesion varios terminales ya abiertos, aunque tambien es posible hacerlo con un solo terminal abierto pero requiere un poco mas de malicia a la hora de utilizar la funcionalidad. Para partir la pantalla en 2 partes iguales de forma horizontal se usa:
[CTRL]+[a]
[S]
Para hacer la misma particion pero vertical se usa :
[CTRL]+[a]
[|]
Estas divisiones se pueden hacer infinitamente a manera de mosaico de forma recursiva, osea una ventana partida se puede volver a partir. Lo anterior permite hacer organizaciones complicadas de pantalla para mostrar multiples procesos al mismo tiempo. Para pasar el cursor entre ventanas se usa:
[CTRL]+[a]
[TAB]
Para Cerrar una de las divisiones creadas, es cuestion de poner el cursor sobre la division y presionar:
[CTRL]+[a]
[X]
Si desea cerrar todas menos la division en la que esta el cursos presionar:
[CTRL]+[a]
[Q]
Los datos en screen se copian realizando una seleccion con el cursor. Para iniciar el modo de seleccion presionar:
[CTRL]+[a]
[ [ ]
Para marcar el punto de inicio de la seleccion presionar :
[ENTER]
se mueve el cursor hasta cubrir el texto que se desea copiar. Para finalizar la marca y copiar el texto se presiona nuevamente:
[ENTER]
[CTRL]+[a]
[ ] ]
Para cerrar un terminal adentro de una sesion de screen, solo es necesario escribir en la linea de comando:
exit [ENTER]
En ocaciones el proceso de un terminal puede quedar congelado, motivo por el cual se hace necesario matar todos los procesos que se esten ejecutando en ese terminal. Para cumplir este proposito GNU screen dispone de una conbinacion de teclas que realiza este proceso:
[CTRL]+[a] [k]
El programa preguntara en la parte inferior de la pantalla si relamente desea matar el proceso, para proceder responder que "y" de si