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 de C: Crear una nueva ventana.
  • Ctrl + A seguido de N o P: Navegar a la siguiente o anterior ventana.
  • Ctrl + A seguido de ": Listar todas las ventanas.
  • Ctrl + A seguido de K: 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:

  1. Inicia una nueva sesión de screen y nómbrala servidor: screen -S servidor
  2. Dentro de esta sesión, inicia tu servidor (por ejemplo, un servidor Python simple): python3 -m http.server
  3. Separa la sesión para mantener el servidor funcionando en segundo plano: Ctrl + A y luego D
  4. Cierra tu terminal o desconéctate del sistema. El servidor seguirá ejecutándose.
  5. 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.