Qué es GNU Screen
Screen es un multiplexor de terminal: permite crear varias sesiones persistentes dentro de una sola consola y mantener procesos vivos aunque cierres la ventana o se caiga la SSH. Es como tener una “sala” donde dejas tus trabajos corriendo, te vas, vuelves y retomas exactamente por donde lo dejaste.
En mi día a día como admin, lo uso en CentOS, AlmaLinux y Debian. Me salva cuando lanzo tareas largas (respaldos, migraciones, descargas, scrapers, compilaciones): me desconecto y todo sigue corriendo. Luego, con un simple screen -r, reaparezco en la sesión y veo el histórico como si nunca me hubiera ido.

Ventajas clave
- Persistencia: detach/reattach sin perder estado ni salida.
- Multiplexación: varias ventanas/regiones en una sesión.
- Colaboración: compartir sesión con otros usuarios (ideal para debug conjunto).
- Logging: registro de lo que ocurre para auditoría o post-mortem.
- Bajo consumo: es ligero y viene en casi todas las distros.
Instalación rápida (Debian/Ubuntu, RHEL/CentOS/AlmaLinux, Fedora, Arch)
Debian/Ubuntu
sudo apt update && sudo apt install screen
screen --version
Te dejo una guia tambien sobre apt-get update y upgrade
RHEL/CentOS/AlmaLinux
sudo dnf install screen # En versiones antiguas: sudo yum install screen
screen --version
Fedora
sudo dnf install screen
Arch/Manjaro
sudo pacman -S screen
SUSE/openSUSE
sudo zypper install screen
Tip: agrega
screena tu bootstrap de servidores. Evita ese “¡ups!” cuando se cae la SSH a mitad de un rsync.
Conceptos clave: sesiones, ventanas, regiones y el prefijo Ctrl-a
- Sesión: contenedor principal. Puedes tener múltiples sesiones por host/usuario.
- Ventanas: “pestañas” dentro de una sesión; cada una con su proceso/shell.
- Regiones (splits): dividir la pantalla para ver varias ventanas a la vez.
- Prefijo: casi todos los atajos empiezan con
Ctrl-a(se puede cambiar).
Flujo mental:
- Abre/nombrar una sesión (
screen -S nombre). - Crea ventanas y muévete entre ellas.
- Divide si necesitas ver dos procesos en paralelo.
- Detach (sales sin matar nada) y reattach al volver.
Flujo básico en 5 minutos: crear, nombrar, detach, reattach
Crear sesión (y nombrarla)
screen # crea una sesión anónima
screen -S deploy # crea y nombra "deploy"
Dentro de screen
- Nueva ventana:
Ctrl-a c - Listar ventanas:
Ctrl-a "(doble comilla) - Renombrar ventana:
Ctrl-a A
Salir temporalmente (detach)
Cuando quieras cerrar la terminal sin matar nada:
Ctrl-a d
Volver (reattach)
screen -ls # lista sesiones
screen -r deploy # reanuda por nombre
screen -r 12345.pts-0.host # por ID
Forzar reattach si quedó “pegada”
screen -D -RR
En mi caso, cierro el portátil sin miedo: la sesión queda ahí. Al reconectar SSH, un
screen -ry sigo como si nada.
Atajos esenciales de Screen (tabla rápida)
| Acción | Atajo |
|---|---|
| Nueva ventana | Ctrl-a c |
| Siguiente / Anterior ventana | Ctrl-a n / Ctrl-a p |
| Lista de ventanas | Ctrl-a " |
| Renombrar ventana | Ctrl-a A |
| Detach (salir sin cerrar) | Ctrl-a d |
| Cerrar ventana actual | Ctrl-a k |
| Dividir horizontal | Ctrl-a S (mayúscula) |
| Dividir vertical (si disponible) | Ctrl-a | |
| Cambiar de región | Ctrl-a TAB |
| Cerrar región | Ctrl-a X |
| Copiar/scrollback (Copy mode) | Ctrl-a [ |
| Pegar | Ctrl-a ] |
| Búsqueda en Copy mode | / (adelante), ? (atrás) |
| Alternar logging | Ctrl-a H |
Nota: el split vertical depende de la versión. Si no va con
Ctrl-a \|, usa:split -vdesde el prompt de comandos de screen (Ctrl-a :).
Casos reales: procesos largos, SSH inestable y trabajo en equipo
- Procesos largos: backups nocturnos, importaciones de DB,
ffmpeg, builds… Inicias dentro descreen, haces detach y te olvidas. Yo lo uso para lanzamientos en AlmaLinux: dejo el despliegue corriendo y me reconecto luego para revisar output línea a línea. - SSH inestable: redes corporativas, Wi-Fi caprichosas, saltos por bastion…
screendesacopla tu trabajo de la conexión. Más de una vez perdí la SSH en Debian y al volver todo estaba tal cual lo dejé. - Colaboración: puedes habilitar modo multiusuario y compartir la sesión para que un compañero vea/escriba (ideal para soporte o pair debugging).
- Auditoría y post-mortem: con logging y scrollback, ves exactamente todo lo que ocurrió y documentas decisiones sin reinventar la rueda.
Logging y persistencia: -L, -Logfile, scrollback y ver “todo lo que ocurrió”
Si tu prioridad es no perder una sola línea, combina scrollback amplio, copy mode y logs.
Arrancar con logging
screen -L -Logfile $HOME/screenlog-%t-%Y%m%d-%02c.log -S tarea-larga
-Lactiva logging desde el inicio.-Logfiledefine el nombre (usa placeholders como%t= título ventana).- Dentro de screen, puedes alternar con
Ctrl-a H.
Ajustar scrollback (buffer) y copiar
- Entra a copy mode:
Ctrl-a [ - Muévete con flechas /
PgUp/PgDn. - Busca
/textoo?textoy marca con barra espaciadora; pega conCtrl-a ].
En mi flujo, registro tareas largas y luego reviso el log para elaborar informes: así veo exactamente lo que pasó sin confiar sólo en mi memoria.
Personaliza tu .screenrc: ejemplos comentados para mejorar la productividad
Crea ~/.screenrc con algo práctico desde el minuto uno:
# ~/.screenrc — productivo y legible
# Prefijo alternativo (escapar Ctrl-a si lo usas en Emacs)
# escape ^Aa
# Buffer de scroll generoso
defscrollback 10000
# Logging por defecto y ruta de logs
deflog on
logfile $HOME/.screen/logs/%t-%Y%m%d-%0c.log
# Títulos automáticos de ventana (útil con -Logfile %t)
autodetach on
defmonitor on
# Barra de estado mínima (host, ventana y hora)
hardstatus on
hardstatus alwayslastline "%{= kG} %H %{= kw}%-w%{= kW}%n %t%{-}%+w %=%{= kG}%Y-%m-%d %c "
# Atajos para dividir y moverte
bind S split # split horizontal
bind | split -v # split vertical (si tu versión lo soporta)
bind h focus left
bind l focus right
bind j focus down
bind k focus up
Consejo: crea
~/bin/newscreenque prepare variables (como nombres de ventana) y arranque con logging listo para cada proyecto.
Gestión avanzada: compartir sesiones, -X para enviar comandos y -D -RR para reanudar “sí o sí”
Compartir sesión (multiusuario)
# En screen: habilita multiusuario
Ctrl-a : multiuser on
Ctrl-a : acladd otro_usuario
El otro usuario se conecta con:
screen -x tu_usuario/nombre_sesion
Útil para soporte, formación o “dos teclados, una consola”.
Enviar comandos a una sesión sin entrar
# Enviar "ls -la" a la ventana actual de la sesión "deploy"
screen -S deploy -X stuff "ls -la$(printf \\r)"
Con -X automatizas tareas (reinicios, señales, etc.) desde scripts.
Reanudar pase lo que pase
screen -D -RR
Desengancha sesiones en otros TTY y te mete en la primera disponible.
En rollouts delicados, me ha permitido volver a la consola crítica incluso tras cortes feos.
Problemas comunes y soluciones (cheat-sheet de errores)
“There is no screen to be resumed.”
No hay sesiones detached:
screen -ls # verifica
screen -r nombre # reanuda por nombre/ID
screen -D -RR # fuerza si estaba "attached" en otra TTY
“Cannot open your terminal ‘/dev/pts/X’ – please check.”
Permisos/TTY heredado. Soluciones típicas:
# Recuperar un TTY válido
script -q /dev/null
# o
sudo script -q /dev/null
# luego prueba screen -r de nuevo
Sockets huérfanos / directorio de sockets raro
Limpia el socket viejo (con cuidado) o especifica un DIR temporal:
screen -ls
# si ves sockets corruptos, cierra screens reales y elimina el archivo en /run/screen/S-usuario/
Tecla prefijo en conflicto
Define otro prefijo:
# en ~/.screenrc
escape ^Bb # usa Ctrl-b como prefijo
Screen vs tmux: ¿cuándo elegir cada uno?
screenbrilla por simplicidad, ubicuidad y robustez. Está “en todas partes”, ideal en servidores legacy o mínimos. Para muchos flujos (deploys, tareas largas, soporte), cumple de sobra.tmuxofrece un ecosistema más moderno (paneos/estadísticas/plug-ins) y suele tener mejor soporte de splits y personalización con su status line.
Mi criterio práctico: si el server es austero o legacy, screen; si es tu estación de trabajo/servidor moderno y te apetece tunear, tmux. No es religión: es contexto.
Comandos rápidos para llevarse (resumen final)
# Crear y nombrar
screen -S tarea
# Detach / Reattach
Ctrl-a d
screen -r tarea
screen -D -RR # reanudar a la fuerza
# Ventanas
Ctrl-a c # nueva
Ctrl-a n / p # siguiente / anterior
Ctrl-a " # lista
Ctrl-a A # renombrar
# Splits (según versión)
Ctrl-a S # horizontal
Ctrl-a | # vertical
Ctrl-a TAB # cambiar de región
# Logging
screen -L -Logfile ~/logs/%t-%Y%m%d.log
Ctrl-a H # alternar
# Copiar/scrollback
Ctrl-a [
/, ? # buscar
Ctrl-a ] # pegar
Sobre Screen
screen es herramienta de batalla para admins y devops: ligera, presente en casi cualquier distro y perfecta para procesos largos y SSH inestable. En mi experiencia, puedo desconectarme con tranquilidad: vuelvo con screen -r y veo todo lo que ocurrió gracias al scrollback y el logging. Con un .screenrc sensato, atajos memorizados y un par de recetas (multiusuario, -X, -D -RR), te convierte la terminal en un entorno fiable, colaborativo y persistente.
FAQs
¿Cómo nombro y reanudo una sesión concreta?screen -S miwork para crearla; screen -ls para listar; screen -r miwork para volver.
¿Cómo dejo algo corriendo y me voy?
Pulsa Ctrl-a d (detach). Nada se mata. A la vuelta: screen -r.
¿Cómo activo logs con nombre por ventana?screen -L -Logfile $HOME/logs/%t-%Y%m%d.log -S build y dentro Ctrl-a H para alternar.
¿Puedo compartir la sesión con otro usuario?
Sí: dentro de screen multiuser on y acladd usuario. El otro entra con screen -x tu_usuario/nombre.
¿Qué hago si dice “Cannot open your terminal /dev/pts/…”?
Ejecuta script -q /dev/null para obtener un TTY limpio y vuelve a screen -r.
Opinión Personal
Creo que Screen en Linux sigue siendo el héroe silencioso del admin moderno. No presume, no “rompe” modas y, aun así, me ha salvado más sesiones de las que puedo contar. Cuando trabajo en CentOS, AlmaLinux o Debian, lo abro casi por reflejo: lanzo tareas largas, hago detach y me voy tranquilo. Si la SSH se corta, no pasa nada: vuelvo con screen -r y continúo justo donde lo dejé, con todo el historial para revisar qué ocurrió segundo a segundo.
Muchos se quedan en “abre, corre y sal”, pero para mí la diferencia está en logging y scrollback. Poder auditar lo que pasó —sin inventar memoria— es oro en despliegues, migraciones o scripts nocturnos. ¿Que tmux es más moderno? Seguro. En mi estación personal lo disfruto. Pero en servidores de batalla, donde prima la ubicuidad y la fiabilidad, Screen rara vez falla y casi siempre ya está instalado.
También valoro su sencillez para colaborar (modo multiusuario) y automatizar con -X. No es que “todo admin deba usarlo” por dogma, es que te quita fricción y te regala tranquilidad: menos nervios cuando la red tiembla y más foco en resolver.
Ahora te leo a ti: ¿cómo usas Screen? ¿Tienes algún truco, .screenrc útil o caso real que te haya salvado el día? Déjalo en los comentarios y lo incorporo a la guía.




