Linux / Comando / screen: mantener y recuperar sesiones de terminal
screen es un multiplexor de terminal: permite mantener varias ventanas de trabajo dentro de una sesión y volver a conectarse a ella. Es útil en conexiones SSH (Secure Shell, acceso remoto cifrado) que pueden interrumpirse. El flujo básico es crear la sesión, ejecutar el trabajo, separarla con Ctrl+A seguido de d minúscula y recuperarla con screen -r.
Si simplemente se desea ejecutar comandos no interactivos en segundo plano, nohup puede ser más sencillo. Por otro lado, si necesita volver a abrir la pantalla de ejecución para ingresar comandos, screen o tmux son más apropiados.
¿Para qué situaciones se usa screen?
GNU Screen multiplica un terminal para que varios procesos usen terminales virtuales. Los programas en cada ventana continúan ejecutándose incluso si no son visibles en la pantalla o mientras toda la sesión está separada. El comportamiento detallado y todos los comandos se pueden consultar en el manual oficial de GNU Screen.
- Cuando se ejecutan trabajos que llevan tiempo en un servidor accedido por SSH, como compilación, procesamiento de datos o respaldo
- Cuando se necesita separar la pantalla de trabajo y reconectarse desde otra computadora
- Cuando se manejan varias ventanas de terminal como shell, monitoreo de logs o editor dentro de una conexión SSH
- Cuando se necesita verificar más tarde la pantalla de un programa interactivo que se está ejecutando
Una sesión de Screen no sobrevive al reinicio del servidor ni reinicia por sí sola un programa que falla. Las políticas del sistema al cerrar sesiones también pueden terminar procesos: compruebe el comportamiento de su entorno. Para un servicio permanente, utilice un gestor como systemd con las políticas de inicio y recuperación adecuadas.
Instalación y inicio de la primera sesión
Instalar screen
Se instala mediante el gestor de paquetes según la distribución. Puede requerir privilegios de administrador.
En Debian y Ubuntu, utilice APT:
sudo apt update
sudo apt install screen
En una distribución con DNF, use este comando solo si el paquete está disponible en un repositorio habilitado y admitido por su distribución:
sudo dnf install screen
En Arch Linux, utilice Pacman siguiendo su política habitual de actualización del sistema:
sudo pacman -S screen
Se verifica la instalación y la versión de la siguiente manera.
screen --version
Crear una sesión con nombre
Si nombra la sesión con la opción -S, será más fácil distinguir entre varias tareas. Use una cadena corta que refleje el propósito de la tarea para el nombre.
screen -S backup
Cuando se abra una nueva pantalla de shell, ejecute los comandos como de costumbre dentro de ella. Puede verificar si la shell actual está dentro de Screen mediante variables de entorno.
printf '%s\n' "$STY"
Iniciar una sesión con comandos
También puede especificar inmediatamente el programa que se ejecutará al crear la sesión.
screen -S backup ./backup.sh
Si el programa especificado termina y no hay otras ventanas dentro de la sesión, la sesión de Screen también puede cerrarse. Si necesita verificar los resultados en la pantalla después de que finalice el trabajo, es más conveniente crear primero una sesión de shell y ejecutar los comandos dentro de ella.
Atajos de Screen usados con frecuencia
Los atajos predeterminados se introducen en dos pasos: mantenga Control mientras pulsa a, suelte ambas teclas y pulse el segundo carácter indicado. Las mayúsculas importan: c crea una ventana, mientras que C realiza otra acción. En la tabla, A y H requieren mayúscula, normalmente con Shift; d, c, n, p y k son minúsculas.
| Atajos | Función | Descripción |
|---|---|---|
Ctrl+A, d |
Separación de sesión | Salir del terminal actual manteniendo el programa activo. |
Ctrl+A, c |
Crear nueva ventana | Crea una nueva ventana de shell dentro de la sesión actual. |
Ctrl+A, n |
Ventana siguiente | Moverse a la siguiente ventana de terminal virtual. |
Ctrl+A, p |
Ventana anterior | Moverse a la ventana de terminal virtual anterior. |
Ctrl+A, " |
Lista de ventanas | Seleccione la ventana que desea mover desde la lista. |
Ctrl+A, A |
Cambiar nombre de la ventana | Asigne un título fácil de reconocer a la ventana actual. |
Ctrl+A, [ |
Modo copiar/desplazar | Navegue por la salida anterior o copie texto. |
Ctrl+A, H |
Alternar registro de historial | Comience o detenga la escritura de la salida de la ventana actual en un archivo de registro. |
Ctrl+A, k |
Cerrar ventana actual | Después de confirmar, se eliminará la ventana virtual actual. |
Ctrl+A, ? |
Ayuda | Muestra la lista actual de asignaciones de teclas. |
Para enviar el propio carácter Control+A al programa, pulse Ctrl+A y después a minúscula. A mayúscula cambia el título de la ventana; no cumple la misma función. Las asignaciones pueden cambiar en .screenrc.
Separar sesión y volver a conectar
Separar dejando las tareas en ejecución
Dentro de una sesión de Screen, si pulsa Ctrl+A seguido de D, la sesión se separará. Después de separarla, incluso si termina la conexión SSH, los programas dentro de la sesión seguirán ejecutándose.
Incluso si la conexión del terminal se interrumpe inesperadamente, si la configuración predeterminada autodetach está activada, la sesión se separará automáticamente.
Verificar la lista de sesiones
screen -ls
La salida mostrará el identificador de la sesión y el estado como Detached, Attached, etc. Si hay varias sesiones, debe especificar el nombre o el identificador completo para conectarse.
Volver a conectarse a una sesión separada
screen -r backup
Si la sesión está conectada a otro terminal, primero verifique la lista. Use la siguiente forma solo cuando esté seguro de que quiere desconectar la conexión anterior y adherirla al terminal actual.
screen -d -r backup
-d -r puede interrumpir la pantalla de trabajo normal de otros usuarios, por lo que se debe tener cuidado en cuentas compartidas o entornos de operación conjunta.
Usar varias ventanas en una sesión
Crear y nombrar ventanas
Después de crear una nueva ventana con Ctrl+A, c, puede nombrarla con Ctrl+A, A. Por ejemplo, la primera ventana se puede usar para ejecutar tareas, la segunda ventana para revisar registros y la tercera ventana para verificar el estado del sistema.
Moverse entre ventanas
Muévase a la siguiente o anterior ventana con Ctrl+A, n y Ctrl+A, p. Si hay muchas ventanas, es más rápido abrir la lista con Ctrl+A, " y seleccionar la ventana deseada.
Cerrar ventanas y sesiones correctamente
Ejecute exit solo dentro de la ventana de Screen que desea cerrar. Al cerrar la última ventana, termina la sesión. Para dejar el trabajo ejecutándose y desconectar únicamente la visualización, use Ctrl+A y después d.
exit
Si solo desea separar la sesión, debe usar Ctrl+A, d en lugar de exit. Si fuerza el cierre de una ventana con programas en ejecución, los resultados del trabajo pueden dañarse.
Uso del desplazamiento y registro de logs
Pulse Ctrl+A y después [ para entrar en el modo de copia y desplazamiento. Revise la salida con las flechas, Page Up y Page Down y salga con Esc. La cantidad de historial depende de la configuración y de -h.
screen -h 10000 -S analysis
Registrar la salida de la ventana en un archivo
Pulse Ctrl+A y después H mayúscula para alternar el registro de la ventana actual. El nombre habitual de la primera ventana es screenlog.0. El registro guarda la salida nueva, no recupera el historial previo; si el archivo ya existe, añade contenido. Puede haber un intervalo de vaciado del búfer antes de que todo aparezca en disco.
screen -L -Logfile backup-screen.log -S backup
El registro puede contener información sensible que se muestre en pantalla. Elija una carpeta propia con permisos adecuados, compruebe el archivo y defina cómo controlar su crecimiento. El ejemplo crea una sesión nueva llamada backup; consulte antes screen -ls para evitar confundirla con otra del mismo nombre.
Situaciones problemáticas y precauciones de seguridad
Cuando la sesión permanece en estado Attached
Una sesión puede seguir marcada como Attached tras perder la conexión. Consulte screen -ls y confirme que ninguna terminal legítima la está utilizando. Solo entonces use screen -d -r NOMBRE_SESIÓN, sustituyendo el nombre por el identificador real.
Los elementos de sesión Dead o inaccesibles se pueden limpiar a screen -wipe después de confirmar que no hay procesos en ejecución.
Acceso a la sesión de la misma cuenta
Las sesiones de Screen siguen los permisos de la cuenta de usuario del sistema operativo. Si varias personas comparten la misma cuenta, otros pueden reconectarse a la sesión, por lo que se debe evitar compartir cuentas y separar las claves SSH de los permisos de la cuenta. También es importante no dejar abierta una shell de administrador o una pantalla sensible dentro de la sesión cuando se ausente.
Comparación de screen, nohup, tmux, systemd
| Herramientas | Tareas adecuadas | Características clave |
|---|---|---|
screen |
Trabajo interactivo con terminal para reconexión | Soporta la separación de sesiones, reconexión y múltiples ventanas. |
tmux |
Trabajo interactivo y división de pantalla compleja | La gestión de ventanas y paneles, y la función de personalización del usuario son abundantes. |
nohup |
Tareas por lotes simples no interactivas | Ignora SIGHUP, pero no restaura la pantalla del terminal. |
systemd |
Servicios que deben ejecutarse continuamente | Se pueden configurar la integración al inicio, reinicio en caso de fallo, dependencias y gestión de registros. |
Cómo ejecutar tareas no interactivas incluso después de cerrar el terminal se puede consultar en Cómo usar el comando nohup.
Preguntas frecuentes
¿Continúan las tareas si se interrumpe la conexión SSH?
Si la separación automática de Screen funciona correctamente y el servidor sigue ejecutándose, los programas dentro de la sesión también se mantienen. Sin embargo, no evita la interrupción por reinicio del servidor, fallos del propio proceso o cierre por parte del administrador.
¿Qué hago si aparece que hay varias sesiones en screen -r?
Después de verificar la lista con screen -ls, especifique el nombre de la sesión o el identificador completo como screen -r backup. Si le da un nombre significativo al crearla, puede reducir los errores de selección.
¿Qué hago si Ctrl+A entra en conflicto con los atajos del programa?
Pulse Ctrl+A y después a minúscula para enviar Control+A al programa. Para cambiar el carácter de comando, utilice -e o .screenrc y actualice los atajos que comparta con su equipo.
¿Se puede restaurar la sesión de Screen incluso después de reiniciar?
No. Screen solo mantiene los procesos y terminales virtuales del sistema en ejecución, pero no restaura automáticamente las sesiones y procesos después de reiniciar. Si necesita un inicio automático después del reinicio, configure un servicio con systemd o use un programador adecuado según las características de la tarea.




