Tutoriel Linux

Pantalla en Linux: Desconectar y reanudar una sesión de administrador sin perder el control.

Débutant6 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

Se inicia una actualización, una copia de seguridad o un comando largo a través de SSH, y luego se pierde la conexión. Si el comando se estaba ejecutando en una terminal normal, suele ser porque ya ha terminado. Pantalla bajo Linux Esto evita precisamente este tipo de sorpresas desagradables: la sesión permanece activa en el servidor, incluso si desaparece su terminal local.

Lo uso principalmente para tareas sencillas donde quiero mantener el control sin crear un sistema complejo. No es tan práctico como tmux para trabajar todo el día en varios paneles, pero para desconectar y reanudar un comando de administrador, screen sigue funcionando muy bien.

Administrador de Tux frente a un servidor y una sesión de Linux separada, luego reanudó
Screen mantiene una sesión activa en el servidor, incluso si se pierde la conexión SSH.

Instale la pantalla si el comando no está disponible.

En muchos servidores, screen no está instalado por defecto. Compruebe primero:

pantalla --versión

Si falta el comando, instale el paquete utilizando el gestor de paquetes de su distribución.

sudo apt update
sudo apt install screen
sudo pacman -S pantalla

Antes de iniciar una operación delicada, abra una sesión SSH estable y, si es posible, mantenga una conexión de respaldo secundaria. Screen minimiza los daños cuando la terminal falla, pero no reemplaza una consola de emergencia si pierde la conexión de red o SSH.

Cree una sesión de pantalla llamada

Evita las sesiones anónimas. Con un nombre claro, sabrás inmediatamente qué procesos siguen ejecutándose en el servidor.

pantalla -S guardar

Llegarás a una nueva terminal. Desde allí, ejecuta tu comando como de costumbre. Por ejemplo:

rsync -avh /srv/data/ /mnt/backup/data/

Lo importante es que este comando se ejecuta dentro de la sesión de screen, no directamente en la terminal SSH. Si el ordenador entra en modo de suspensión o se interrumpe la conexión, la sesión de screen puede continuar en el servidor.

Desconectar la sesión sin detener el comando

Para salir de la sesión de pantalla sin detener lo que se esté ejecutando en ella, utilice el siguiente acceso directo:

  • Control + TIENE
  • Entonces D

La pantalla suele mostrar un mensaje como este. A continuación, regresas a tu terminal habitual. El comando ejecutado en screen continúa en ejecución.

Ten cuidado de no golpear salida Si solo quieres desvincular la sesión. salida Cierra la ventana en pantalla. Si era la última ventana activa, la sesión finaliza.

Listar y reanudar una sesión de pantalla

Para ver las sesiones existentes:

pantalla -ls

A continuación, puede reanudar la sesión por nombre:

pantalla -r guardar

Si solo existe una sesión, pantalla -r A menudo, eso es suficiente. En un servidor compartido o en una máquina donde se ejecutan varias tareas, prefiero usar el nombre. Es menos arriesgado que reanudar la sesión equivocada en el momento equivocado.

Si la pantalla indica que la sesión aún está conectada en otro lugar, por ejemplo, después de una desconexión SSH mal detectada, utilice:

pantalla -d -r copia de seguridad

Esta opción primero desconecta la conexión anterior y luego vuelve a conectar la sesión en tu terminal actual. Es práctica, pero úsala con precaución en una cuenta compartida: podrías desconectar a alguien que estuviera trabajando en esa sesión.

En algunos casos, es posible que desee ver la misma sesión desde dos dispositivos. Por ejemplo, una consola abierta en un monitor y otra en su computadora portátil.

pantalla -x guardar

Ambos terminales comparten la misma sesión. Todos ven lo mismo y escriben en la misma consola. Esto resulta útil para una intervención guiada, pero mucho menos si dos personas escriben simultáneamente sin coordinarse.

Cómo cerrar correctamente una sesión de pantalla

Cuando el comando se complete, salga de la consola abierta en screen:

salida

También puedes usar Control + DUna vez cerrada la última ventana, la sesión de pantalla desaparece de la lista.

Para forzar la finalización de una sesión con nombre desde fuera de la red, utilice:

pantalla -S guardar -X salir

Asegúrese de su elección. Este comando cierra la sesión de pantalla y todo lo que se esté ejecutando en ella. Al realizar una copia de seguridad, migración o actualización, siempre prefiero reanudar la sesión, comprobar su estado actual y detenerla solo si es necesario.

Errores comunes en la administración

La primera trampa es raízsi lanzas pantalla sudoLa sesión pertenece a root. Por lo tanto, a menudo necesitará reanudarla con sudo screen -rEn la mayoría de los casos, prefiero iniciar la pantalla con mi usuario normal y luego usar sudo Solo para los pedidos que lo requieran.

El segundo error común es confundir `screen` con un gestor de servicios. Un comando que se ejecuta en `screen` permanece vinculado a una sesión interactiva. Para un servicio persistente, un demonio o una tarea programada, utilice systemd, un temporizador o un servicio dedicado. (Véase el artículo sobre…) temporizadores del sistema es más adecuado para este tipo de necesidad.

El tercer inconveniente es usar un comando sin un registro. Si está ejecutando una tarea importante, redirija la salida a un archivo o use una herramienta de registro. Luego puede monitorear los resultados con cola en Linux.

./script-maintenance.sh > maintenance.log 2>&1

Luego puedes desconectar la pantalla, volver más tarde y releer lo que sucedió, incluso si la pantalla se desplazó demasiado rápido.

Screen, nohup o tmux: ¿cuál elegir?

Para un comando no interactivo que simplemente necesita continuar después de que se cierre SSH, nohup Eso puede ser suficiente. Ejecutas el comando, guardas el resultado en un archivo y no necesitas usar una interfaz.

Para una sesión de trabajo adecuada con múltiples ventanas, paneles, un diseño más moderno y mejor ergonomía, tmux suele ser más agradable. Pero en un servidor minimalista, screen sigue estando disponible, es simple y muy eficiente. Para una intervención breve, no me molesto en usar nada más. pantalla -S nombreEjecuto el comando, me desconecto y luego regreso para verificar.

La comprobación que debe realizarse antes de cerrar SSH

Antes de cerrar su sesión SSH, tómese diez segundos para verificar que screen reconoce correctamente su sesión:

pantalla -ls

Si tu sesión aparece como desconectada, puedes salir de SSH con mayor tranquilidad. Si no aparece, no des por sentado que `screen` está protegiendo tu comando. Vuelve a la terminal, comprueba dónde iniciaste la tarea y corrígelo antes de cerrar la conexión.

Documentación pantalla(1) y el Manual de pantalla GNU detallar todas las opciones. Para uso administrativo rutinario, recuerde cuatro comandos en particular: crear con pantalla -Ssepararse con Control + TIENE Entonces D, reanudar con pantalla -r pantalla -ls.

sudo apt update && sudo apt upgrade