Imagen destacada de Screen

Uso Correcto de Screen

Screen es una aplicación para la terminal que nos permitirá gestionar nuestras sesiones de la consola en una sola ventana. Esto puede ser útil para hacer diferentes tareas en un servidor usando una sola sesión o dejar corriendo procesos mientras realizamos otras tareas. Por ejemplo, dejamos corriendo algo en algún tarro del labcomp, nos desconectamos, y cuando nos conectemos otra vez, podremos ver cómo va la ejecución de ese proceso.

Uso básico

Entonces, para comenzar, nos conectaremos por ssh a algún pc del labcomp, tal como fue explicado en otro de nuestros tutoriales. Supongamos que comenzaremos a trabajar en el tarro rocuant.

Una vez allí dentro ejecutamos el comando screen:

[user@rocuant ~]$ screen
[user@rocuant ~]$

Lo que ha sucedido es que tenemos una nueva pantalla con una terminal en blanco, lista para ejecutar comandos.

De aquí en adelante, cada comando relacionado a screen tendrá las teclas CTRL-a seguido de una letra. Esto significa que dejamos pulsado la tecla CTRL junto con la a, y luego de soltarlas, presionamos la tecla siguiente.

Como ya fue mencionado, con screen podemos tener distintas ventanas ejecutando distintas cosas en una misma sesión. Para crear otra ventana podemos usar CTRL-a c

Si hacemos esto, tendremos la nueva ventana en pantalla, aunque esto no significa que hayamos perdido a la anterior. Para devolvernos podemos usar CTRL-a n. Si quisiéramos retornar a la nueva ventana, usamos CTRL-a p, que haría exactamente lo mismo, pero en la dirección opuesta. Estos comandos son cíclicos, es decir, si no encuentra más ventanas, vuelve a la primera.

Por ejemplo, si tuviéramos 3 ventanas y estamos en la primera, con CTRL-a n vamos a la segunda, luego repetimos el comando y vamos a la tercera, y si pulsamos CTRL-a p nos devolveremos a la segunda. Si en vez de haber pulsado CTRL-a p hubiéramos pulsado CTRL-a n, hubiéramos ido nuevamente a la primera. En cambio, si continuáramos pulsando CTRL-a p, pasaríamos de la segunda a la primera, y luego de la primera a la tercera.

Si quisiéramos ver una lista de nuestras ventanas abiertas podemos usar CTRL-a w. Obtendremos algo como lo siguiente:

0- user@rocuant:~  1* user@rocuant:~

El * indica la ventana donde estamos posicionados en este momento.

Podemos usar estos números de ventana para dirigirnos rápidamente hacia ellas, usando CTRL-a , por ejemplo, CTRL-a 1. Esto nos llevaría a nuestra segunda ventana, ya que como vimos, comienzan a partir del 0.

También podríamos usar CTRL-a » para ver una lista de las ventanas abiertas por la que podemos navegar utilizando las flechas y seleccionarla con enter:

Num Name                                                                                                          Flags

0 user@rocuant:~                                                                                                 $
1 user@rocuant:~                                                                                                 $

Sin embargo, todas las ventanas se llaman igual. Renombremos la primera ventana, vamos a ella con CTRL-a 0 y le cambiamos el nombre con CTRL-a A. Nos aparecerá lo siguiente:

Set window's title to: user@rocuant:~

Podemos borrar user@rocuant:~ y asignarle el nombre que nosotros queramos.

Si volvemos a ver la lista de las ventanas abiertas se verá la ventana con el mismo número pero con el nuevo nombre.

Para cerrar una ventana, usamos CTRL-a k:

Really kill this window [y/n]

Gestión de sesiones de screen

Para salir de screen y cerrar todas las ventanas usamos Ctrl-a :

Really quit and kill all your windows [y/n]

Sin embargo, justamente aquí es donde está el potencial de screen. Podemos salir sin destruir nuestras ventanas para volver en un instante posterior, usando CTRL-a d:

[detached from 14038.pts-0.rocuant]

Para volver, escribimos screen -r:

[user@rocuant ~]$ screen -r
[user@rocuant ~]$

Podemos salir e irnos del tarro en cuestión, y luego volver tranquilamente. Solo debemos recordar el tarro en el que estábamos cuando volvamos a conectarnos por ssh. Si al conectarnos no quedamos en el mismo tarro, debemos hacer ssh para volver, ahí recién podemos ejecutar el comando screen -r. Si lo hacemos en otro tarro, tendremos otra sesión de screen abierta, no queremos tener múltiples sesiones sin utilizar en ejecución.

Por ejemplo, si entramos por ssh y quedamos en concepción, pero nosotros teníamos la sesión de screen en rocuant, hacemos lo siguiente:

[user@concepcion ~]$ ssh rocuant
user@rocuant's password:
Last login: Tue May 26 12:18:38 2020 from xx.xx.x.xx
[user@rocuant ~]$ screen -r
[user@rocuant ~]$

En caso de que al haber salido de una sesión dejándola abierta hayamos escrito screen otra vez, sin -r, abriremos otra sesión. Para ver las sesiones de screen abiertas podemos usar screen -ls. Nos entregará la lista de sesiones abiertas con un número, el cual deberemos acompañar al -r, screen -r . Por ejemplo:

[user@rocuant ~]$ screen -ls
There are screens on:
        16069.pts-4.rocuant     (Detached)
        14038.pts-0.rocuant     (Detached)

Si queremos entrar a la primera, escribimos:

[user@rocuant ~]$ screen -r 16069
[user@rocuant ~]$
``

Si cerramos una por una las pantallas que tenemos abierta en una sesión de screen con CTRL-a k, esa sesión de screen se cierra automáticamente. Para cerrar todas las pantallas de una sesión de screen, recordando, se usa CTRL-a \.

Siempre hay que verificar con screen -ls que no hayan quedado sesiones abiertas.

[user@rocuant ~]$ screen -ls No Sockets found in /run/screen/S-user. «`

Publicado por Bruno Prieto González