El comando screen es un multiplexor de terminal, lo que esencialmente significa que te permite ejecutar múltiples sesiones de terminal dentro de una sola ventana. ¿Alguna vez has necesitado gestionar tareas de larga duración o mantener tus sesiones activas incluso después de haber cerrado la sesión? Ahí es donde entra en juego screen
.
La belleza de screen
es su capacidad para desacoplar y volver a acoplar sesiones, lo que lo hace increíblemente útil para el trabajo remoto, scripts de larga duración o cualquier tarea que requiera que saltes entre múltiples ventanas de terminal. Los comandos asociados más comunes incluyen screen -r
para volver a adjuntar una sesión, screen -ls
para listar las sesiones activas y Ctrl + A, luego D para desacoplar una sesión sin terminarla.
Por lo tanto, tanto si eres un administrador del sistema que hace malabares con varias tareas como un desarrollador que ejecuta múltiples procesos, screen
es un comando que querrás añadir a tu kit de herramientas de Linux. Sigue leyendo para aprender a aprovechar todo su potencial.
Sintaxis general para el comando screen:
screen [OPCIONES] [NOMBRE_SESION]
Crear una sesión con un nombre específico
screen -S [nombre_de_sesion]
La opción -S
crea una nueva ventana dentro de la pantalla y le asigna un nombre.
Ejemplo:
user@hostname:~$ screen -S mi_sesion
Después de ejecutar este comando, estarás en la nueva sesión de pantalla llamada mi_sesion
. No verás el nombre de la sesión directamente en el terminal, pero puedes listar todas las sesiones activas desvinculándote de la sesión actual (pulsando Ctrl + A seguido de D) y luego ejecutando screen -ls
.
Salida de ejemplo para screen -ls después de desvincularse:
user@hostname:~$ screen -ls
There is a screen on:
12345.mi_sesion (Detached)
1 Socket in /var/run/screen/S-user.
En este ejemplo, 12345 es el ID de proceso de la sesión de pantalla, y mi_sesion
es el nombre que le diste a la sesión.
Para volver a adjuntarte a esta sesión, puedes utilizar:
screen -r 12345
O si nombraste tu sesión:
screen -r mi_sesion
Esto te devolverá a la sesión de pantalla de la que te desvinculaste.
Listar todos los procesos de pantalla
screen -ls
Esta opción muestra todas las ventanas abiertas actualmente, incluidas las que se ejecutan en segundo plano.
Ejemplo:
La salida normalmente se verá así:
There are screens on:
12345.pts-0.hostname (Detached)
67890.pts-1.hostname (Attached)
2 Sockets in /var/run/screen/S-username.
Aquí tienes un desglose de la salida:
12345.pts-0.hostname
y67890.pts-1.hostname
son los identificadores de las sesiones de pantalla.12345
y67890
son los ID de proceso (PID) de las sesiones de pantalla.pts-0
ypts-1
indican los tipos de terminal.- hostname es el nombre de la máquina host donde se están ejecutando las sesiones de pantalla.
(Detached)
o(Attached)
indica el estado de la sesión de pantalla.- Detached significa que la sesión se está ejecutando en segundo plano y no está actualmente adjunta a ningún terminal.
- Attached significa que la sesión se está viendo actualmente en una ventana de terminal.
2 Sockets in /var/run/screen/S-username
indica el número de sesiones de pantalla y el directorio donde se almacenan los sockets de sesión.username
es el nombre del usuario propietario de las sesiones.
Volver a adjuntar la sesión de la terminal
screen -r [nombre_sesion]
Usa esta opción para volver a adjuntar una sesión de pantalla que se desacopló en el pasado.
Ejemplo:
Digamos que tienes un proceso de larga duración, como descargar un archivo grande, y quieres que siga ejecutándose incluso después de haber cerrado la sesión. Puedes usar screen para crear una nueva sesión y ejecutar el proceso allí.
Crear una nueva sesión de pantalla:
screen -S mi_sesion_descarga
Esto creará una nueva sesión de pantalla llamada mi_sesion_descarga
.
Ejecutar tu proceso de larga duración:
wget https://ejemplo.com/archivo-grande.zip
Desacoplar de la sesión de pantalla:
Pulsa Ctrl + A
seguido de D para desacoplar de la sesión. La sesión seguirá ejecutándose en segundo plano.
Cerrar sesión o cerrar la terminal:
En este punto, puedes cerrar sesión o cerrar la terminal de forma segura. La descarga continuará en segundo plano.
Volver a adjuntar a la sesión de pantalla:
Más tarde, cuando quieras comprobar el progreso o volver a adjuntar a la sesión, puedes usar el comando screen -r.
screen -r mi_sesion_descarga
Esto te volverá a adjuntar a la sesión de pantalla llamada mi_sesion_descarga
, y podrás ver el progreso de tu descarga o cualquier otro proceso de larga duración.
Si tienes varias sesiones desacopladas y no estás seguro de cuáles son los nombres de las sesiones, puedes listarlas con:
screen -ls
Esto te mostrará una lista de todas las sesiones de pantalla desacopladas y adjuntadas, y puedes elegir a cuál quieres volver a adjuntar.
Desacoplar una sesión
screen -d [nombre_sesion]
La opción -d
se utiliza para desacoplar la sesión de pantalla, lo que permite volver a adjuntarla más tarde.
Ejemplo:
Aquí tienes un ejemplo paso a paso para demostrar cómo se puede utilizar screen -d [filename]:
Paso 1: Crear una nueva sesión de pantalla con un nombre
Primero, crea una nueva sesión de pantalla y dale un nombre, por ejemplo “mi_sesion
“:
screen -S mi_sesion
Paso 2: Ejecutar algunos comandos en la sesión de pantalla
Después de crear la sesión, estarás dentro de ella. Puedes ejecutar algunos comandos como:
ls
echo "Hola, Mundo!"
Paso 3: Desacoplar la sesión de pantalla manualmente
Puedes desacoplar de la sesión de pantalla manualmente pulsando Ctrl + A seguido de D. Esto te devolverá a tu terminal original, pero la sesión “mi_sesion
” seguirá ejecutándose en segundo plano.
Paso 4: Volver a adjuntar a la sesión de pantalla
Puedes volver a adjuntar a la sesión utilizando:
screen -r mi_sesion
Paso 5: Desacoplar la sesión de pantalla usando -d
Ahora, digamos que estás en otro terminal y quieres desacoplar la sesión “mi_sesion
” sin volver a adjuntarte a ella. Puedes usar la opción -d
así:
screen -d mi_sesion
Esto desacoplará la sesión “mi_sesion
” si está actualmente adjunta a cualquier terminal, sin terminarla. Puedes volver a adjuntarte a ella más tarde usando screen -r mi_sesion
.
Compartir la sesión de una pantalla
screen -X [comando]
Esta opción permite que dos personas inicien sesión en la misma cuenta desde diferentes ubicaciones.
Ejemplo:
Aquí tienes un sencillo ejemplo para demostrar cómo puedes usar screen -X para enviar un comando a una sesión de pantalla en ejecución:
Paso 1: Crear una nueva sesión de pantalla
Primero, abre un terminal y crea una nueva sesión de pantalla llamada “mi_sesion
“:
screen -S mi_sesion
Paso 2: Desacoplar de la sesión de pantalla
Puedes desacoplar de la sesión de pantalla pulsando Ctrl + A seguido de D.
Paso 3: Enviar un comando a la sesión de pantalla desde otro terminal
Abre otra ventana de terminal y usa el comando screen -X
para enviar un comando a la pantalla “mi_sesion
“. Por ejemplo, vamos a enviar el comando quit
para terminar la sesión:
screen -S mi_sesion -X quit
Esto terminará la sesión de pantalla “mi_sesion
“.
Más comandos de Linux:
Operaciones de Directorios | rmdir · cd · pwd · exa · ls |
Operaciones de Archivos | cat · cp · dd · less · touch · ln · rename · more · head |
Operaciones de Sistema de Archivos | chown · mkfs · locate |
Redes | ping · curl · wget · iptables · mtr |
Búsqueda y Procesamiento de Texto | find · grep · sed · whatis · ripgrep · fd · tldr |
Información y Gestión del Sistema | env · history · top · who · htop · glances · lsof |
Gestión de Usuarios y Sesiones | screen · su · sudo · open |
¿Qué te parece?
Es bueno conocer tu opinión. Deja un comentario.