Definir un gran perfil de pantalla GNU usando .screenrc

Contenidos

screen, la utilidad de Linux que le posibilita iniciar una ‘pantalla’ dentro de una terminal, está por defecto un poco mal configurada. Aprenda a crear un excelente perfil de pantalla que se carga automáticamente cada vez que utiliza la pantalla.

Que es pantalla?

Screen es una utilidad GNU (GNU es una gran colección de software open source, y su agrupación en un sistema operativo se conoce comúnmente como Linux) que le posibilita iniciar una o más pantallas dentro de su terminal.

Puede preguntar por qué querría iniciar una pantalla dentro de mi terminal, y puede establecer pantalla mejor / más lejos? Seguro. Imagine que está usando un servidor remoto de SSH y, de repente, su conexión de red se interrumpe, justo en medio de la migración de la base de datos o la copia de seguridad de producción, que se estaba ejecutando dentro de la ventana de su terminal. Sucede con regularidad, y el problema es que cualquier comando que se estaba ejecutando cuando se rompió la conexión ahora se termina, independientemente del estado en el que se encontraba.

Esta situación claramente molesta es una que desea evitar a toda costa. No solo puede dejar el sistema o el paquete de software en un estado indefinido, sino que todo el trabajo hecho hasta ahora puede simplemente perderse.

Bienvenido a screen, la utilidad de Linux que le posibilita iniciar una sesión de terminal virtual (un ‘pantalla‘) dentro de su sesión de terminal, con el principal y gran beneficio de que dicha sesión de pantalla no se terminará cada vez que se interrumpa la conexión de red, o cuando cierre la sesión de terminal que inició el screen sesión (el procedimiento padre). Simplemente puede esperar hasta que vuelva su conexión de red, o abrir otra terminal si no está conectado a través de SSH y trabajando solo en la máquina local, y simplemente vuelva a conectarse a su sesión de pantalla.

¿Excelente? Instalemos rápidamente pantalla entonces, si aún no lo ha hecho:

Instalando pantalla

Instalar pantalla en su distribución de Linux basada en Debian / Apt (como Ubuntu y Mint), ejecute el siguiente comando en su terminal:

sudo apt install screen

Instalar pantalla en su distribución de Linux basada en RedHat / Yum (como RHEL, Centos y Fedora), ejecute el siguiente comando en su terminal:

sudo yum install screen

Ahora que la pantalla está instalada, puede comenzar a usarla de inmediato. Simplemente ejecutar screen en la línea de comando y ya está dentro. Es factible que deba presionar enter o espacio para pasar por el screen Pantalla de bienvenida.

La pantalla de bienvenida de la pantalla GNU de Linux

Verá un nuevo símbolo del sistema. Presione la secuencia de teclas CTRL+a > CTRL+d para volver al símbolo del sistema de la sesión de shell principal. Entonces, puede ejecutar screen -ls para ver una lista de sesiones de pantalla activas. Escribir el comando (en el shell principal en el que se encuentra ahora si siguió el texto de manera idéntica), screen -d -r te traerá de vuelta al screen sesión, siempre que solo haya una sesión de pantalla activa (puede iniciar muchas).

Si hay más de una sesión de pantalla ejecutándose en su sistema (y es de su propiedad), puede escribir screen -d -r NAME dónde NAME es el nombre de una pantalla según la lista screen -ls, a modo de ejemplo 367434.pts-1.roel1, aún cuando solo especifique cualquier parte antes o después del punto (como 367 o pts), que aún identifica de forma única una sesión de pantalla en particular, además es suficiente.

Veamos cómo podemos ahora establecer un gran perfil de pantalla, basado en un extracto de setup_server.sh, ubicado en el repositorio Percona-QA GitHub (con licencia GPLv2), un script creado para configurar un servidor para las pruebas de control de calidad. No le recomiendo que ejecute este script, puesto que está desactualizado, se utiliza solo como referencia y, por lo general, se ejecuta manualmente paso a paso. La única sección que usaremos es la .screenrc código, que se reproduce a continuación.

Definición de una gran configuración .screenrc

los .screenrc El archivo es un archivo de configuración oculto en su directorio de inicio. Para editarlo (es probable que aún no exista, especialmente si acaba de instalar screen, simplemente use su editor de texto favorito y abra el archivo ~/.screenrc. Si tiene experiencia con Vim, simplemente puede escribir en el indicador de su terminal vi ~/.screenrc. Si desea obtener más información sobre Vi / Vim, considere leer nuestro post Establecer un excelente perfil de Vim usando .vimrc.

Una vez que hayas abierto ~/.screenrc, simplemente agregue el siguiente bloque de texto:

# Configuración general vbell en vbell_msg '! Bell!'  autodetach en startup_message off defscrollback 10000 # Termcapinfo para xterm termcapinfo xterm * Z0 =  E[?3h:Z1=E[?3l:is=E[rE[mE[2JE[HE[?7hE[?1;4;6l   # Do not resize window
termcapinfo xterm* OL=1000                                                    # Increase output buffer for speed

# Remove various keyboard bindings
bind x    # Do not lock screen
bind ^x   # Idem
bind h    # Do not write out copy of screen to disk
bind ^h   # Idem
bind ^   # Do not kill all windows/exit screen
bind .    # Disable dumptermcap

# Add keyboard bindings
bind } history
bind k kill

Our .screenrc template

If you do not want to use a text editor, or want to somehow script the installation of this .screenrc file into many systems, you could use the following code instead, which will – whenever pasted, or executed from another script, create the file ~/.screenrc for the user who is executing the script. Let’s call our script make_screenrc.sh or similar.

#!/bin/bash
# Create screen script ~/.screenrc
touch ~/.screenrc
if [ -z "$(cat ~/.screenrc|grep 'termcapinfo xterm')" ];  después cat << EOF> ~ / .screenrc # Configuración general vbell on vbell_msg '! Bell!'  autodetach on startup_message off defscrollback 10000 # Termcapinfo for xterm termcapinfo xterm * Z0 =  E[? 3h: Z1 =  E[? 3l: is =  E[r  E[m  E[2J  E[H  E[ ? 7h  E[? 1; 4; 6l # No cambiar el tamaño de la ventana termcapinfo xterm * OL = 1000 # Incrementar el búfer de salida para la velocidad # Quitar varios links de teclado enlazar x # No bloquear link de pantalla ^ x # Idem enlazar h # No escribir una copia de la pantalla en el disco enlazar ^ h # Idem enlazar ^  # No matar todas las ventanas / salir de la conexión de pantalla.  # Deshabilitar dumptermcap # Agregar links de teclado bind} history bind k kill EOF fi

El guión preestablece una serie de configuraciones, y la mayoría de las que se muestran aquí se explican por sí mismas. A modo de ejemplo, startup_message off simplemente apaga la pantalla de bienvenida que vimos antes. defscrollback 10000 establece nuestro desplazamiento hacia atrás a 10000 líneas (puede ingresar al modo de desplazamiento / edición pulsando la secuencia de teclas CTRL+a > CTRL+ESC y puede salir por ende presionando ESC una o dos veces).

Además activamos una campana virtual (puesto que no podemos escuchar el pitido del altavoz de un servidor remoto) usando el vbell on y vbell_msg '!Bell!' comandos que configuran el mensaje de campana virtual en '!Bell!'. A pesar de esto, he descubierto que la campana virtual a menudo no funciona.

A continuación, establecemos algunos termcapinfo códigos para ampliar el búfer de salida y ajustar el tamaño de la ventana. Además eliminamos varias combinaciones de teclas potencialmente molestas y agregamos algunas configuraciones de teclado útiles.

Todo lo que haremos para activar este nuevo .screenrc configuración es abrir un nuevo screen sesión. Ahora nos beneficiaremos de la nueva configuración establecida.

Terminando

Definiendo un gran defecto .screenrc el archivo ayuda cuando usas screen mucho. Apagar la pantalla de bienvenida, incrementar el desplazamiento hacia atrás y mejorar el búfer de salida para la velocidad son solo algunas de las cosas que hicimos en nuestro .screenrc plantilla. ¡Disfruta usando la pantalla y la plantilla .screenrc!

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.