En esta guía, veremos qué es GNU Screen y el uso básico del comando Screen con ejemplos en los sistemas operativos Linux y Unix.
¿Qué es la pantalla GNU?
Pantalla GNU es un multiplexor de terminal (administrador de ventanas). Como su nombre lo dice, Screen multiplexa la terminal física entre múltiples shells interactivos, de modo que podemos realizar diferentes tareas en cada sesión de terminal.
Todas las sesiones de pantalla ejecutan sus programas de forma completamente independiente. Por lo tanto, un programa o proceso que se ejecuta dentro de una sesión de pantalla seguirá ejecutándose incluso si la sesión se cierra o desconecta accidentalmente.
Por ejemplo, al actualizar Ubuntu servidor a través de SSH, el comando Screen seguirá ejecutando el proceso de actualización en caso de que su sesión SSH finalice por algún motivo.
GNU Screen nos permite crear fácilmente múltiples sesiones de pantalla, cambiar entre diferentes sesiones, copiar texto entre sesiones, adjuntar o desconectar de una sesión en cualquier momento, etc.
GNU Screen es una de las herramientas de línea de comandos importantes que todos los administradores de Linux deben aprender y usar cuando sea necesario.
Veamos cómo administrar múltiples sesiones de Terminal usando el comando Pantalla con ejemplos en Linux.
Instalar GNU Screen en Linux
GNU Screen está disponible en los repositorios predeterminados de la mayoría de los sistemas operativos Linux.
Para instalar GNU Screen en Arch Linux, EndeavourOS, Manjaro Linux, ejecute:
$ sudo pacman -S screen
En Debian, Ubuntu, Linux Mint:
$ sudo apt-get install screen
En Fedora, RHEL, CentOS. Alma Linux, Rocky Linux:
$ sudo dnf install screen
O,
$ sudo yum install screen
En CentOS 8, Screen no está disponible en los repositorios oficiales. Por lo tanto, debe habilitar [EPEL]
repositorio y luego instale la pantalla.
$ sudo dnf install epel-release
$ sudo dnf install screen
En SUSE/openSUSE:
$ sudo zypper install screen
Avancemos y veamos algunos ejemplos de comandos de pantalla.
Ejemplos de comandos de pantalla
El atajo de prefijo predeterminado para todos los comandos en Pantalla es Ctrl+a
. Necesitas usar mucho este atajo cuando usas Pantalla. Así que recuerda este atajo de teclado.
Crear nueva sesión de pantalla
Vamos a crear una nueva sesión de pantalla y adjuntarla. Para hacerlo, escriba el siguiente comando en la terminal:
screen
Ahora, ejecute cualquier programa o proceso dentro de esta sesión. El proceso o programa en ejecución seguirá ejecutándose incluso si está desconectado de esta sesión.
Separarse de las sesiones de pantalla
Para desconectarse desde dentro de una sesión de pantalla, presione Ctrl+a y d . No es necesario que presione las dos combinaciones de teclas al mismo tiempo. Primero presiona Ctrl+a y luego presione d . Después de desconectarse de una sesión, verá una salida similar a la siguiente.
[detached from 29149.pts-0.sk]
Aquí, 29149 es el ID de pantalla y pts-0.sk es el nombre de la sesión de pantalla. Puede adjuntar, desconectar y eliminar sesiones de pantalla usando la ID de pantalla o el nombre de la sesión respectiva.
Crear una sesión con nombre
También puede crear una sesión de pantalla con cualquier nombre personalizado de su elección que no sea el nombre de usuario predeterminado como se muestra a continuación.
screen -S ostechnix
El comando anterior creará una nueva sesión de pantalla con el nombre "xxxxx.ostechnix" y adjúntelo inmediatamente. Para desconectarse de la sesión actual, presione Ctrl+a seguido de d .
Nombrar sesiones de pantalla puede ser útil cuando desea encontrar qué procesos se están ejecutando en qué sesiones. Por ejemplo, cuando se configura una pila LAMP dentro de una sesión, simplemente puede nombrarla como se muestra a continuación.
screen -S lampstack
Crear sesiones separadas
A veces, es posible que desee crear una sesión, pero no desea adjuntarla automáticamente. En tales casos, ejecute el siguiente comando para crear una sesión independiente denominada "senthil" :
screen -S senthil -d -m
O, en breve:
screen -dmS senthil
El comando anterior creará una sesión llamada "senthil", pero no se adjuntará.
Sesiones de pantalla de lista
Para enumerar todas las sesiones en ejecución (adjuntas o separadas), ejecute:
screen -ls
Salida de muestra:
There are screens on: 29700.senthil (Detached) 29415.ostechnix (Detached) 29149.pts-0.sk (Detached) 3 Sockets in /run/screens/S-sk.
Como puede ver, tengo tres sesiones en ejecución y todas están separadas.
Si no hubo sesiones de pantalla en ejecución, obtendrá una salida como la siguiente.
No Sockets found in /run/screen/S-sk.
Adjuntar a sesiones de pantalla
Si desea adjuntar a una sesión en cualquier momento, por ejemplo 29415.ostechnix , simplemente ejecute:
screen -r 29415.ostechnix
O,
screen -r ostechnix
O simplemente use la ID de pantalla:
screen -r 29415
Para verificar si estamos conectados a la sesión mencionada, simplemente enumere las sesiones abiertas y verifique.
screen -ls
Salida de muestra:
There are screens on: 29700.senthil (Detached) 29415.ostechnix (Attached) 29149.pts-0.sk (Detached) 3 Sockets in /run/screens/S-sk.
Como puede ver en el resultado anterior, actualmente estamos conectados a 29415.ostechnix sesión. Para salir de la sesión actual, presione ctrl+a, d.
Crear sesiones anidadas
Cuando ejecutamos el comando "pantalla", creará una sola sesión para nosotros. Sin embargo, podemos crear sesiones anidadas (una sesión dentro de una sesión).
Primero, cree una nueva sesión o adjúntela a una sesión abierta. Voy a crear una nueva sesión llamada "anidada".
screen -S nested
Ahora, presiona Ctrl+a y c dentro de la sesión para crear otra sesión. Simplemente repita esto para crear cualquier número de sesiones de pantalla anidadas. A cada sesión se le asignará un número. El número comenzará desde 0 .
Puede pasar a la siguiente sesión presionando Ctrl+n y vaya al anterior presionando Ctrl+p .
Esta es la lista de atajos de teclado importantes para administrar sesiones anidadas.
Ctrl+a ” - Mostrar todas las sesionesCtrl+a 0 - Cambiar a la sesión número 0- Ctrl+a n - Cambiar a la siguiente sesión
- Ctrl+a p - Cambiar a la sesión anterior
- Ctrl+a S - Dividir la región actual horizontalmente en dos regiones
- Ctrl+a l - Dividir la región actual verticalmente en dos regiones
- Ctrl+Q - Cerrar todas las sesiones excepto la actual
- Ctrl+una X - Cerrar la sesión actual
- Ctrl+a \ - Mata todas las sesiones y termina la pantalla
- Ctrl+a? - Mostrar combinaciones de teclas. Para salir de esto, presione ENTER.
Bloquear sesiones
La pantalla tiene una opción para bloquear una sesión de pantalla. Para hacerlo, presione Ctrl+a y x . Introduzca su contraseña de Linux para bloquear la pantalla.
Screen used by sk <sk> on ubuntuserver. Password:
Sesiones de registro
Es posible que desee registrar todo cuando esté en una sesión de Pantalla. Para hacerlo, simplemente presione Ctrl+a y H .
Alternativamente, puede habilitar el registro al iniciar una nueva sesión usando -L parámetro.
screen -L
A partir de ahora, todas las actividades que haya realizado dentro de la sesión se registrarán y almacenarán en un archivo llamado screenlog.x en su directorio $HOME. Aquí, x es un número.
Puede ver el contenido del archivo de registro usando cat comando o cualquier aplicación de visor de texto.
Lectura sugerida:
- Cómo registrar todo lo que haces en la terminal
Sesiones de pantalla de inicio automático
Las sesiones de pantalla de inicio automático serán de gran ayuda cuando se ejecute un proceso de larga duración a través de SSH. Si perdió la conectividad de la red por algún motivo, el proceso seguirá ejecutándose dentro de la sesión de Pantalla en el sistema remoto y podrá volver a conectarse cuando la red vuelva a estar en línea. Para saber cómo iniciar automáticamente una pantalla al iniciar el sistema, consulte el siguiente enlace.
- Cómo iniciar automáticamente la sesión de pantalla en Linux al iniciar sesión
Comprueba si eres una sesión de pantalla o no
Como habrá notado, la sesión normal y la sesión de pantalla se verán exactamente iguales. No verá ninguna indicación obvia de si está dentro de la sesión de Pantalla o de la sesión normal. Para saber si está en sesión de pantalla o no, siga los pasos que se indican en el siguiente enlace.
- Cómo comprobar si está en sesión de pantalla o no en Linux
Sesiones de Kill Screen
Si ya no se requiere una sesión, simplemente elimínela. Para eliminar una sesión separada llamada "senthil":
screen -r senthil -X quit
O,
screen -X -S senthil quit
O,
screen -X -S 29415 quit
Si no hay sesiones abiertas, verá el siguiente resultado:
$ screen -ls No Sockets found in /run/screens/S-sk.
Para obtener más detalles, consulte las páginas man.
$ man screen
También hay una utilidad de línea de comandos similar llamada "Tmux" que hace el mismo trabajo que GNU Screen. Para saber más al respecto, consulte la siguiente guía.
- Ejemplos de comandos Tmux para administrar múltiples sesiones de terminal