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.
Índice
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
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.