Tutorial GNU Screen

Como instalar GNU Screen

sudo apt-get install screen

¿ Para que sirve GNU 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.

Dejar funcionando un proceso en un terminal y cerrar sesion sin que el proceso se detenga

  1. Iniciar una sesion con el servidor con un terminal remoto (putty)

  2. Crear una sesion de GNU screen:

    screen -S nombre_de_la_sesion

  3. ejecutar el comando que se desea que corra en proceso de fondo

  4. desadjuntar (dettach) la session del terminal fisico

    [CTRL]+[a] [d]

  5. cerrar session con el terminal remoto (putty)

Recuperar una sesion que esta en proceso de fondo

  1. Iniciar una sesion con el servidor con un terminal remoto (putty)
  2. listar las sesiones que estan corriendo en fondo actualmente (si es que las hay):

    screen -list

  3. del listado escojer el nombre de sesion que se desea recuperar y despues ejecutar el comando:

    screen -r nombre_de_la_sesion

Terner multiples terminales abiertos en una sola pantalla de terminal remoto

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:

Cambiar entre terminales utilizando una listado de terminales abiertos

  1. Abrir el listado de terminales abiertos:

    [CTRL]+[a] ["]

  2. Seleccionar con las flechas el terminal que al que se desea pasar y para confirmar

[ENTER]

Cambiarle el nombre al terminal

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:

  1. Ubicarse sobre el terminal al cual se le desea cambiar el nombre

  2. Abir la linea de edicion de nombre de terminal:

[CTRL]+[a] [A]

Mostar en la misma pantalla los terminales en forma de pantalla dividida

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]

Como copiar datos entre terminales

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]

Como Pegar Un Texto copiado

[CTRL]+[a] [ ] ]

Como Cerrar Un Terminal

Para cerrar un terminal adentro de una sesion de screen, solo es necesario escribir en la linea de comando:

exit [ENTER]

Como Matar Un Terminal

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