El comando screen
en Linux es una herramienta poderosa y versátil que permite a los usuarios manejar sesiones terminales de manera más eficiente. Es particularmente útil en entornos donde la estabilidad de la conexión no está garantizada, como en sesiones SSH, o cuando necesitas ejecutar tareas de larga duración sin necesidad de mantener la terminal abierta.
En este artículo, exploraremos a fondo el comando screen
, su instalación, sus características más destacadas y cómo utilizarlo a través de ejemplos prácticos.
¿Qué es screen
?
screen
es un multiplexor de terminales. Esto significa que permite a un usuario acceder a múltiples sesiones de terminal desde una sola ventana de terminal. Además, permite desconectar una sesión (detach) sin cerrar el programa o proceso que se está ejecutando, y luego volver a conectarse (reattach) más tarde.
Instalación de screen
En la mayoría de las distribuciones de Linux, screen
viene preinstalado. Sin embargo, si no lo tienes en tu sistema, puedes instalarlo fácilmente usando el gestor de paquetes correspondiente.
Para distribuciones basadas en Debian (como Ubuntu):
sudo apt-get update
sudo apt-get install screen
Para distribuciones basadas en Red Hat (como CentOS o Fedora):
sudo yum install screen
Uso Básico de screen
Iniciar una Sesión screen
Para iniciar una nueva sesión screen
, simplemente abre tu terminal y escribe:
screen
Esto iniciará una nueva sesión de screen
, y te presentará una terminal que parece idéntica a la original. Puedes empezar a trabajar como lo harías normalmente.
Desconectar (Detach) una Sesión
Una de las características más útiles de screen
es la capacidad de desconectar una sesión sin cerrar los procesos en ejecución. Para desconectar una sesión, usa la combinación de teclas:
Ctrl + A, D
Este comando desconecta la sesión actual y te devuelve a la terminal original, mientras que los procesos dentro de la sesión screen
siguen ejecutándose en segundo plano.
Reconectar (Reattach) a una Sesión
Si has desconectado una sesión y deseas volver a ella, puedes listar todas las sesiones activas con:
screen -ls
Esto mostrará una lista de sesiones screen
disponibles. Verás algo similar a esto:
There is a screen on:
1234.pts-0.hostname (Detached)
1 Socket in /var/run/screen/S-username.
Para volver a conectar a una sesión específica, utiliza:
screen -r 1234
Donde 1234
es el ID de la sesión que quieres reanudar.
Crear una Nueva Sesión con Nombre
Es recomendable nombrar tus sesiones, especialmente si planeas manejar múltiples sesiones. Puedes iniciar una nueva sesión con nombre usando la opción -S
:
screen -S mi_sesion
Esto crea una sesión llamada mi_sesion
, lo cual facilita su identificación cuando quieras reconectarte más tarde.
Navegación y Manejo de Sesiones
Una vez que estás dentro de una sesión de screen
, hay varias operaciones que puedes realizar. Aquí te mostramos las más comunes.
Crear una Nueva Ventana
Puedes crear una nueva ventana dentro de tu sesión de screen
presionando:
Ctrl + A, C
Esto abrirá una nueva ventana de terminal dentro de la misma sesión screen
.
Navegar entre Ventanas
Para navegar entre las diferentes ventanas dentro de una sesión de screen
, usa:
Ctrl + A, N
para ir a la siguiente ventana.Ctrl + A, P
para ir a la ventana anterior.Ctrl + A, <Número>
para ir a una ventana específica, donde<Número>
es el número de la ventana.
Dividir la Pantalla
screen
permite dividir la pantalla y mostrar múltiples ventanas al mismo tiempo:
- Para dividir la pantalla horizontalmente, usa:
Ctrl + A, S
- Para dividirla verticalmente, usa:
Ctrl + A, |
- Para moverte entre las divisiones, usa:
Ctrl + A, Tab
- Para cerrar una división, simplemente usa:
Ctrl + A, Q
Comandos Útiles en screen
screen
tiene una serie de comandos adicionales que pueden ser muy útiles en diversas situaciones:
Listar Todas las Ventanas
Para listar todas las ventanas abiertas en una sesión de screen
, puedes usar:
Ctrl + A, "
Esto mostrará una lista con todas las ventanas activas, permitiéndote seleccionar la que quieras.
Renombrar una Ventana
Para renombrar la ventana actual, usa:
Ctrl + A, A
Esto abrirá un prompt en la parte inferior donde puedes escribir el nuevo nombre para la ventana.
Bloquear la Sesión
Puedes bloquear tu sesión de screen
(similar a un bloqueo de pantalla) con:
Ctrl + A, X
Se te pedirá una contraseña para desbloquear la sesión.
Matar una Ventana
Si quieres cerrar una ventana dentro de screen
, usa:
Ctrl + A, K
Se te pedirá confirmación antes de matar la ventana.
Desconectar Todas las Sesiones
Para desconectar todas las sesiones de screen
y salir de la terminal, puedes usar:
screen -D -RR
Esto desconecta cualquier sesión que esté conectada y te reanuda a la última sesión activa.
Ejemplos Prácticos
- Ejecución de un Script Largo en Segundo Plano:Imagina que tienes un script que tomará horas en completarse, pero necesitas cerrar tu sesión SSH. Puedes hacer lo siguiente:
screen -S script_largo ./mi_script.sh
Ctrl + A, D
Luego, puedes cerrar tu terminal con la seguridad de que el script seguirá ejecutándose. Más tarde, puedes reconectarte con:screen -r script_largo
- Monitoreo de Múltiples Logs en Paralelo:Puedes usar
screen
para monitorear múltiples archivos de log en tiempo real:screen -S logs Ctrl + A, C
# Crea una nueva ventana
tail -f /var/log/syslog Ctrl + A, C
# Crea otra ventana
tail -f /var/log/auth.log
Ahora puedes alternar entre las ventanas para ver ambos logs simultáneamente.
Personalización de screen
El comportamiento de screen
se puede personalizar a través del archivo de configuración .screenrc
, ubicado en el directorio de inicio del usuario (~/.screenrc
). Aquí puedes definir opciones como teclas de acceso rápido personalizadas, nombres de ventanas predeterminados, entre otros.
Por ejemplo, para cambiar la combinación de teclas para crear una nueva ventana, puedes agregar esta línea a .screenrc
:
bind c screen 1
Esto cambia la combinación para crear una nueva ventana a Ctrl + A, 1
.
Conclusión
El comando screen
es una herramienta esencial para cualquier usuario de Linux, especialmente aquellos que trabajan en servidores o con tareas que requieren una ejecución prolongada. Su capacidad para manejar múltiples sesiones, desconectarse y reconectarse, y personalizar su comportamiento lo convierte en una herramienta indispensable.
Con la práctica, screen
puede transformar la manera en que gestionas tus tareas en la terminal, permitiéndote ser más eficiente y flexible en tu flujo de trabajo.