Skip to main content

Screen, múltiples ventanas en Linux

Hola a todos en un nuevo post, en este caso les voy a hablar de una herramienta muy interesante para Linux, Screen.

Screen es una de las herramientas más útiles en este OS porque nos permite ejecutar múltiples consolas que pueden ser controladas a nuestro gusto. Esta idea ha surgido como comentario con un compañero de infraestructuras, en la cual me habló de ella y me dijo “oye tio ¿conoces esta herramienta? podrías hacer un post hablando de ella” y, la verdad sí que la había visto y utilizado pero no le di en su momento la importancia que realmente tiene.

En Screen se manejan 3 conceptos básicos que nos ayudarán a entender un poco más su funcionamiento.

Una sesión es un área de trabajo que se crea cuando ejecutas esta herramienta con el comando screen

Una ventana es una consola de shell abierta dentro de una sesión, a su vez, una sesión puede contener múltiples ventanas

Una región es una división de una ventana que a su vez contiene dentro otra ventana. Podemos dividir una sesión en múltiples partes, posicionarlas horizontal o verticalmente y desplegar una o varias ventanas nuevas en cada split (porción de una región).

 

Una vez entendidos estos conceptos, vamos a instalar screen como siempre nosotros lo haremos en debian pero, está disponible en muchas otras distribuciones y su uso es semejante en todas ellas.

 

Instalando screen

En debian lo instalaremos con el siguiente comando

apt-get install screen

Una vez instalado, podemos abrir una sesión con el siguiente comando

screen

O, podemos crear la sesión con un nombre, en caso de tener varias sesiones abiertas es muy útil para identificar cada una de ellas

screen -S nombre_sesión

Antes de explicar como funciona realmente esta herramienta, comentaremos que en screen, todas las operaciones se realizan con la secuencia de comandos CTRL + a seguida de alguna letra y/o combinación de letras.

 

Creando ventanas en screen

Una vez tenemos creada nuestra sesión podemos crear una nueva ventana pulsando

CTRL + a y después c

Podemos ver una lista de las ventanas pulsando

CTRL + a y después mayúsculas + 2 (comillas dobles ")

Num Name                       Flags
0 bash                           $
1 bash                           $
2 bash                           $
3 bash                           $

En esta lista podemos navegar con las flechas de arriba y abajo y pulsar ENTER para seleccionar una ventana.

Por defecto en debian las ventanas tendrán el nombre de bash pero, podemos cambiar el nombre de la ventana con la siguiente combinación de teclas

CTRL + a y después mayúsculas + a

Nos aparecerá un mensaje mostrando el mensaje de la ventana actual, borramos el nombre y escribimos el nuevo nombre de dicha ventana.

También podemos cambiar entre las diferentes ventanas con las siguientes secuencias de comandos

CTRL + a y después los números del 0 al 9 para cambiar a la ventana situada en esa posición

CTRL + a y después n para pasar a la próxima ventana

 

Dividiendo ventanas en regiones

Podemos dividir una ventana en diferentes regiones y, cada región puede tener el foco en una ventana diferente. Para dividir una screen en dos regiones podemos usar la siguiente combinación

CTRL + a y después SHIFT + s

Screen, múltiples ventanas en Linux

 

Una vez tenemos creada la nueva región, podemos hacer foco en ella de la siguiente forma

CTRL + a y después TAB (tabulador)

Una vez estamos en esta nueva región, podemos crear nuevas ventanas y realizar los comandos habituales independientes de la otra región de nuestra screen.

Si queremos cerrar una región podemos hacerlo de la siguiente forma

CTRL + a y después SHIFT + x para cerrar la región actual

CTRL + a y después SHIFT + q para cerrar todas las regiones excepto la actual

 

Otras operaciones con screen

Podemos matar un programa dentro de una screen con la siguiente combinación

CTRL + a y después k

También podemos ejecutar diferentes comandos, como cerrar el multi-usuario de una sesión

CTRL + a ":multiuser off"

 

Attaching, Re-Attaching and Dettaching

Dentro de las funcionalidades de screen, existe la posibilidad de ejecutar un comando muy largo, como por ejemplo un rsync, y dejarlo ejecutando en una consola, minimizarla y reconectarse en un rato a la misma.

Para minimizar una consola lo haremos con la siguiente cominación

CTRL + a y después d

Podemos retornar a la consola con el comando

screen -r

Si tenemos varias screen abiertas nos retornará un listado como este

There are several suitable screens on:
13465.byte    (21/01/17 00:12:11)    (Detached)
13142.byte    (21/01/17 00:01:55)    (Attached)

Si queremos ahora abrir una screen minimizada lo haremos con el comando

screen -r pid

Sustituir pid por el id del proceso, en nuestro caso, por ejemplo sería 13465

 

Screen multi-usuario

Otra de las grandes ventajas de screen es el uso de consolas multi-usuario, qué quiere decir esto, que esta screen podrá ser operada por varios usuarios a la vez.

Para crear una sesión multi-usuario crearemos nuestra screen con el comando:

screen -S nombre_screen

Y después la siguiente combinación:

CTRL + a y después escribimos ":multiuser on"

Desde este momento nuestra screen podrá ser utilizada por otros usuarios. Para conectarse a esta consola multiusuario lo haremos con uno de los siguientes comandos:

screen -x nombre_screen

screen -r pid

Como no, en esta screen, se tiene que poder decidir quien puede utilizarla. Para ello usaremos la siguiente sintaxis

CTRL + a y después escribimos :acladd lista_usuarios

El listado de usuarios debe ser separado por comas, un ejemplo sería:

CTRL + a :acladd user1,user2,user3

 

Otra opción es establecer los permisos que tendrá cada usuario. Podemos asignar o revocar los permisos w (write), r (read) y x (execution) con los valores + o – respectivamente. Después se deberá incluir la ventana a la cual se quieren establecer estos permisos, el símbolo # indicaría todas las ventanas.

El comando sería:

CTRL + a y después escribimos :aclchg [username] [permiso] [ventana]

Y un ejemplo sería

CTRL + a y después :aclchg user1 -w #

El usuario user1 quedaría sin permisos de escritura en todas las ventanas.

Otra de las opciones sería ver que usuarios se encuentran conectados a una ventana, para ello usamos el comando

CTRL + a y después SHIFT  +

Y veríamos un listado de los usuarios conectados

term-type   size         user interface           window       Perms
———- ——- ———- —————– ———-     —–
xterm-256c  80×36        root@/dev/pts/0      nb  0(bash)       rwx

Mensajes masivos

Y como última utilidad que explicaremos en este momento, podemos enviar un mensaje a todas las ventanas creadas actualmente, para ello utilizamos el comando

CTRL + a y después escribimos :wall mensaje

 

Como conclusión final, screen es una herramienta muy útil y que puede facilitar el día a día en gran medida. A, como última observación si queremos guardar un historial de los comandos realizados en una screen, por ejemplo por si queremos controlar lo que hace un usuario, podemos utilizar la combinación de teclas

CTRL + a y después SHIFT + h (H)

 

Esto ha sido todo por hoy, esperamos vuestras dudas, opiniones, sugerencias y nos vemos en el próximo post.

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada.