Cómo finalizar una sesión de Linux screen

LinuxBeginner
Practicar Ahora

Introducción

Este tutorial proporcionará una visión general de los conceptos básicos de Linux Screen, un potente multiplexor de terminal que le permite crear, gestionar y navegar por múltiples sesiones de terminal dentro de una sola ventana. Aprenderá cómo iniciar, separar (detach) y volver a adjuntar (reattach) sesiones de Screen, así como explorar aplicaciones prácticas de esta versátil herramienta.

Entendiendo los Fundamentos de Linux Screen

Linux Screen es un potente multiplexor de terminal que le permite crear, gestionar y navegar por múltiples sesiones de terminal dentro de una sola ventana. Proporciona una forma de ejecutar múltiples comandos o aplicaciones simultáneamente, mantenerlos ejecutándose en segundo plano y cambiar entre ellos sin problemas.

Uno de los principales casos de uso de Linux Screen es habilitar sesiones persistentes. Esto significa que puede iniciar un proceso de larga duración, separarse (detach) de la sesión y luego volver a adjuntarse (reattach) a ella, incluso desde una ubicación o dispositivo diferente. Esto es particularmente útil para tareas como la administración remota de servidores, la ejecución de scripts automatizados o el mantenimiento de procesos de larga duración que no deben interrumpirse.

Otra característica clave de Linux Screen es su capacidad para admitir sesiones compartidas. Esto permite que varios usuarios se conecten a la misma sesión de Screen, lo que permite la colaboración y la asistencia remota. Esto puede ser especialmente útil en escenarios donde varios miembros del equipo necesitan trabajar en el mismo proyecto o solucionar un problema juntos.

Para demostrar el uso básico de Linux Screen, vamos a iniciar una nueva sesión de Screen. Abra su terminal y escriba el siguiente comando:

screen

Ahora estará dentro de una nueva sesión de Screen. Puede saber que está en una sesión de Screen porque el terminal puede verse ligeramente diferente, o puede ver un mensaje de bienvenida.

Ahora, vamos a ejecutar un comando simple dentro de esta sesión de Screen. Usaremos el comando top para ver los procesos en ejecución.

top

Debería ver la salida de top mostrando los procesos del sistema.

top - HH:MM:SS up  X days, HH:MM,  X users,  load average: X.XX, X.XX, X.XX
Tasks: XXX total,   X running, XXX sleeping,   X stopped,   X zombie
%Cpu(s):  X.X us,  X.X sy,  X.X ni, XX.X id,  X.X wa,  X.X hi,  X.X si,  X.X st
MiB Mem :  XXXX.X total,  XXXX.X free,   XXX.X used,  XXXX.X buff/cache
MiB Swap:     0.0 total,     0.0 free,     0.0 used.  XXXX.X avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
   XXXX labex     20   0  XXXXXX  XXXXX  XXXXX S   X.X   X.X   X:XX.XX top
   XXXX labex     20   0  XXXXXX  XXXXX  XXXXX S   X.X   X.X   X:XX.XX zsh
   ...

Para salir del comando top, presione q.

Ahora, vamos a separarnos (detach) de esta sesión de Screen. Esto dejará la sesión ejecutándose en segundo plano. Para separarse, presione Ctrl+A seguido de d.

Ctrl+A, d

Debería ver un mensaje que indica que se ha separado de la sesión de Screen.

[detached from ...]
Illustration of detaching from Screen session

Ahora está de vuelta en su sesión de terminal original. La sesión de Screen con el comando top (del que salió) todavía se está ejecutando en segundo plano.

Listar y Volver a Adjuntar Sesiones de Screen

Ahora que se ha separado (detached) de una sesión de Screen, aprendamos cómo listar las sesiones en ejecución y volver a adjuntarse (reattach) a una.

Para listar todas las sesiones de Screen en ejecución, use el comando screen -ls en su terminal.

screen -ls

Debería ver una salida similar a esta, que muestra su sesión separada:

There is a screen on:
        XXXXX.pts-X.labex       (Detached)
X Sockets in /run/screen/S-labex.

La salida muestra el ID de la sesión (por ejemplo, XXXXX.pts-X.labex) y su estado (Detached).

Para volver a adjuntarse a la sesión de Screen separada más recientemente, use el comando screen -r.

screen -r

Ahora debería estar de vuelta dentro de su sesión de Screen. Dado que salió de top en el paso anterior, es probable que vea un indicador de terminal estándar dentro de la sesión de Screen.

Illustration of reattaching to Screen session

Si tiene varias sesiones de Screen en ejecución, puede volver a adjuntarse a una sesión específica proporcionando su ID de sesión después del comando screen -r. Por ejemplo, si el ID de la sesión es 12345, usaría:

screen -r 12345

Para este laboratorio, dado que es probable que solo tenga una sesión, screen -r es suficiente.

Ahora que está de vuelta en la sesión de Screen, salgamos de ella correctamente. Puede hacer esto escribiendo exit dentro de la sesión de Screen.

exit

Esto finalizará la sesión de Screen y lo devolverá a su terminal original.

Puede verificar que la sesión está cerrada listando las sesiones de Screen nuevamente:

screen -ls

Debería ver una salida que indica que no hay sesiones de Screen en ejecución:

No Sockets in /run/screen/S-labex.
Output showing no running sessions

Finalizando una Sesión de Screen

En el paso anterior, aprendió cómo salir de una sesión de Screen desde dentro de la sesión usando el comando exit. Sin embargo, puede haber ocasiones en las que necesite finalizar una sesión de Screen desde fuera de la sesión, por ejemplo, si una sesión no responde o simplemente desea cerrarla sin volver a adjuntarse (reattaching).

Para finalizar una sesión de Screen específica desde su terminal original, puede usar el comando screen -X -S [session_id] quit. Necesitará el ID de la sesión, que puede obtener de screen -ls.

Primero, iniciemos una nueva sesión de Screen para tener una para finalizar.

screen

Ahora, sepárese (detach) de esta sesión usando Ctrl+A, d.

Ctrl+A, d

Liste las sesiones en ejecución para obtener el ID de la sesión.

screen -ls

Anote el ID de la sesión de la salida (por ejemplo, XXXXX.pts-X.labex).

Ahora, use el comando screen -X -S [session_id] quit para finalizar la sesión. Reemplace [session_id] con el ID real que anotó.

screen -X -S XXXXX.pts-X.labex quit

No debería ver ninguna salida si el comando se ejecuta correctamente.

Para confirmar que la sesión ha finalizado, liste las sesiones de Screen nuevamente.

screen -ls

Debería ver una salida que indica que no hay sesiones de Screen en ejecución.

No Sockets in /run/screen/S-labex.

Este método es útil para finalizar forzosamente una sesión de Screen cuando no puede acceder a ella directamente.

Illustration for terminating Screen session

Resumen

Linux Screen es una herramienta valiosa para administrar y mantener sesiones de terminal persistentes. Al comprender cómo crear, separar (detach), listar, volver a adjuntar (reattach) y finalizar sesiones de Screen, puede ejecutar procesos de larga duración, colaborar con los miembros del equipo y asegurarse de que sus tareas críticas continúen ejecutándose incluso cuando no esté conectado directamente a la terminal. Este tutorial ha cubierto los conceptos esenciales y ejemplos prácticos del uso de Linux Screen, equipándolo con el conocimiento para mejorar su productividad y optimizar sus flujos de trabajo basados en terminal.