El comando screen

Os voy a introducir uno de los comandos de linux más útiles en mi opinión, el comando screen. En ocasiones necesitamos dejar corriendo nuestros scripts  de consola durante horas o incluso días si se trata de tareas muy pesadas. El problema que se suele presentar es que si cerramos la consola o la sesión el proceso se detiene y no termina nuestro trabajo.

A mí, personalmente, me suele pasar que trabajo en remoto con un servidor Linux a través de consola en un túnel SSH y es frecuente que se me corte la conexión tras un par de horas de inactividad por lo que mis scripts se interrumpen.

Para evitar estas situaciones está el utilísimo comando screen que ejecuta una terminal en modo background de forma que aunque perdamos la conexión, la terminal sigue activa y se puede volver a recuperar en cualquier momento.

Para el administrador de sistemas o para el programador que pase mucho tiempo usando el terminal este comando se convierte en una herramienta imprescindible.

Abriendo terminales

Para abrir un terminal nuevo con screen simplemente debemos teclear screen, se nos muestra un mensaje, pulsamos enter y a continuación se nos abre el terminal de toda la vida.

Una vez abierto el terminal pasamos a ejecutar un comando de larga duración para que nos de tiempo a salir del terminal y volver a entrar para ver que no se ha interrumpido.

Ejemplo sencillo para crear un terminal con screen

En este caso vamos a ejecutar un comando interactivo para ver cómo sigue funcionando en modo background. Para ello tecleamos el comando top que nos muestra la lista de procesos de nuestro equipo en tiempo real.

Una vez aparece la lista de procesos pulsamos la siguiente combinación de teclas para “desengancharnos” del terminal: CTRL-A + D. Es decir, pulsamos CTRL y A al mismo tiempo y a continuación D. Y se mos mostrará el mensaje “Detached”.

Pasados unos instantes vamos a “reengancharnos” de nuevo a nuestro terminal mediante el comando screen -r que hace un reattach al terminal y veremos que el comando top sigue en ejecución.

Lo mismo sirve con cualquier proceso como por ejemplo un script que calcule decimales de pi o cualquier cosa que lleve un tiempo razonable.

Múltiples terminales con screen

Podemos abrir varios terminales simultáneamente con screen pero a la hora de “reengacharnos” con screen -r nos pedira el identificador del terminal además de mostrarnos una lista de PIDs asociados. Para “reengancharnos” a un terminal concreto debemos teclear screen -r PID, donde PID es el identificador del terminal que nos interesa.

Cerrar terminales

Para cerrar un terminal basta con ejecutar exit una vez estemos enganchados al terminal o bien teclear la combinación CTRL-A + C.

Otros usos de screen

Otra manera de usar el comando screen es pasarle directamente el comando a ejecutar de manera que automáticamente se abre un terminal virtual, se ejecuta el comando e inmediatamente se desengancha el terminal todo en un único paso. Para ello, la sintaxis es screen comando de manera que inmediatamente después de pulsar enter nos muestra el mensaje “Detached”.

Otras alternativas a screen

Como alternativa tenemos también el comando nohup aunque es menos versátil y no permite utilizar comandos interactivos. Simplemente nos permite ejecutar un comando y esperar a que acabe.

Conclusión

El comando screen tiene muchas más opciones pero he querido mostrar las de uso más común a modo de introducción ya que en mi opinión se trata de un comando básico.

Sin categoría

Deja una respuesta