Introducción
El comando screen
en Linux es una herramienta poderosa que permite a los usuarios manejar múltiples sesiones de terminal dentro de una sola ventana de terminal. Esto es especialmente útil para los administradores de sistemas y desarrolladores que necesitan ejecutar múltiples tareas simultáneamente y mantenerlas funcionando incluso cuando cierran la sesión de su sistema.
Instalación
En la mayoría de las distribuciones de Linux, screen
se encuentra disponible en los repositorios oficiales. Para instalarlo, se pueden usar los siguientes comandos según la distribución:
En Debian/Ubuntu y derivados:
sudo apt-get install screen
En Red Hat/CentOS y derivados:
sudo yum install screen
En Fedora:
sudo dnf install screen
Uso Básico
Iniciar una sesión de screen
Para iniciar una nueva sesión de screen
, simplemente escribe:
screen
Esto abrirá una nueva ventana de terminal dentro de screen
. Puedes comenzar a trabajar normalmente dentro de esta sesión.
Separar (detach) y reanudar (reattach) una sesión
Una de las características más útiles de screen
es la capacidad de separar una sesión y luego reanudarla. Esto es particularmente útil si necesitas desconectarte del sistema pero deseas que tus procesos continúen ejecutándose.
Para separar una sesión activa, presiona:
Ctrl + A y luego D
Esto te devolverá a la terminal original, mientras que la sesión de screen
continuará ejecutándose en segundo plano.
Para listar todas las sesiones de screen
disponibles, usa:
screen -ls
Verás una lista de todas las sesiones activas, similar a esta:
There is a screen on: 12345.pts-0.hostname (05/19/24 12:34:56) (Detached) 1 Socket in /run/screen/S-username.
Para reanudar una sesión específica, usa el siguiente comando seguido del ID de la sesión (en este caso, 12345
):
screen -r 12345
Crear una nueva sesión con un nombre específico
Asignar nombres a tus sesiones puede facilitar su gestión, especialmente cuando tienes múltiples sesiones activas. Para crear una nueva sesión con un nombre específico, usa:
screen -S nombre_sesion
Por ejemplo:
screen -S desarrollo
Dividir la pantalla
screen
también permite dividir la pantalla en múltiples regiones. Para dividir la pantalla horizontalmente, usa:
Ctrl + A y luego S
Para dividir la pantalla verticalmente, usa:
Ctrl + A y luego |
Para cambiar entre las regiones, usa:
Ctrl + A y luego Tab
Para cerrar una región, navega a ella y usa:
Ctrl + A y luego Q
Comandos de screen
Dentro de screen
, puedes usar una variedad de comandos para gestionar tus sesiones y regiones. Aquí hay una lista de comandos comunes:
Ctrl + A
seguido deC
: Crear una nueva ventana.Ctrl + A
seguido deN
oP
: Navegar a la siguiente o anterior ventana.Ctrl + A
seguido de"
: Listar todas las ventanas.Ctrl + A
seguido deK
: Cerrar la ventana actual.
Enviar comandos a screen
Puedes enviar comandos directamente a una sesión de screen
desde fuera de la misma. Por ejemplo, para enviar un comando a una sesión específica, usa:
screen -S nombre_sesion -X comando
Por ejemplo, para enviar el comando ls
a una sesión llamada desarrollo
, usa:
screen -S desarrollo -X stuff "ls\n"
Ejemplo de uso práctico
Supongamos que estás ejecutando un servidor en tu máquina local y necesitas mantenerlo funcionando incluso después de cerrar la terminal. Aquí hay un ejemplo de cómo podrías hacerlo usando screen
:
- Inicia una nueva sesión de
screen
y nómbralaservidor
:screen -S servidor
- Dentro de esta sesión, inicia tu servidor (por ejemplo, un servidor Python simple):
python3 -m http.server
- Separa la sesión para mantener el servidor funcionando en segundo plano:
Ctrl + A y luego D
- Cierra tu terminal o desconéctate del sistema. El servidor seguirá ejecutándose.
- Cuando necesites volver a esta sesión, reanúdala:
screen -r servidor
Conclusión
El comando screen
es una herramienta versátil y esencial para cualquier usuario de Linux que maneje múltiples tareas en la terminal. Con screen
, puedes crear, separar y reanudar sesiones, así como dividir tu pantalla para una mayor productividad. Conocer y utilizar screen
puede mejorar significativamente tu eficiencia al trabajar en un entorno de línea de comandos.