Skip to content
Skip to content
Menu
Info Cafe
Info Cafe

Cómo usar el comando screen de Linux

By admin on febrero 23, 2021

  • Dave McKay

    @TheGurkha

  • El 27 de marzo de 2020, 8:00am EDT
Un terminal Linux en un portátil con otras sesiones de terminal superpuestas detrás.
fatmawati achmad zaenuri/

Con el comando Linux screen, puedes empujar las aplicaciones de terminal que se están ejecutando al fondo y sacarlas hacia delante cuando quieras verlas. También es compatible con la visualización en pantalla dividida y funciona a través de conexiones SSH, incluso después de desconectar y volver a conectar!

¿Qué es el comando de pantalla?

El comando screen es un multiplexor de terminal, y está absolutamente lleno de opciones. Decir que puede hacer mucho es el mayor de los eufemismos. La página de manual tiene más de 4.100 líneas.

Los siguientes son los casos más comunes en los que se utilizaría el comando screen, y los cubriremos más adelante en este artículo:

  • La operación estándar es crear una nueva ventana con un shell en ella, ejecutar un comando, y luego empujar la ventana al fondo (llamado «detaching»). Cuando quieras ver cómo va tu proceso, puedes volver a sacar la ventana al primer plano («reattach») y utilizarla de nuevo. Esto es genial para procesos largos que no quieres terminar accidentalmente cerrando la ventana de la terminal.
  • Una vez que tengas una sesión screen en ejecución, puedes crear nuevas ventanas y ejecutar otros procesos en ellas. Puedes saltar fácilmente entre las ventanas para supervisar su progreso. También puede dividir su ventana de terminal en regiones verticales u horizontales, y mostrar sus diversas screen ventanas en una sola ventana.
  • Puede conectarse a una máquina remota, iniciar una screen sesión, y lanzar un proceso. Puedes desconectarte del host remoto, volver a conectarte y tu proceso seguirá en marcha.
  • Puedes compartir una sesión screen entre dos conexiones SSH diferentes para que dos personas puedan ver lo mismo, en tiempo real.

Instalar screen

Para instalar screen en ubuntu, utiliza este comando:

sudo apt-get install screen

El comando "sudo apt-get install screen" en una ventana de terminal."sudo apt-get install screen" command in a terminal window.

Para instalar screen en Manjaro, utilice el siguiente comando:

sudo pacman -Sy screen

El comando "sudo pacman -Sy screen" en una ventana de terminal."sudo pacman -Sy screen" command in a terminal window.

En Fedora, se escribe lo siguiente:

sudo dnf install screen

El comando "sudo dnf install screen" en una ventana de terminal."sudo dnf install screen" command in a terminal window.

Cómo empezar con screen

Para empezar screen, simplemente escribe como se muestra a continuación y pulsa Enter:

screen

El comando "screen" en una ventana de terminal."screen" command in a terminal window.

Publicidad

Verás una página de información sobre la licencia. Puedes pulsar la barra espaciadora para leer la segunda página o Enter para volver al símbolo del sistema.

El comando "screen" información de licencia en una ventana de terminal."screen" command license information in a terminal window.

Te quedas en el símbolo del sistema, y no parece haber pasado gran cosa. Sin embargo, ahora estás ejecutando un shell dentro de un emulador de terminal multiplexado. ¿Por qué es esto algo bueno? Bueno, vamos a comenzar un proceso que va a tomar mucho tiempo para completar. Vamos a descargar el código fuente del último kernel de Linux y a redirigirlo a un archivo llamado latest_kernel.zip.

Para ello, escribimos lo siguiente:

curl https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.9.tar.xz > latest_kernel.zip

El comando "curl latest_kernel.zip" en una ventana de terminal."curl https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.9.tar.xz > latest_kernel.zip" command in a terminal window.

Nuestra descarga comienza, y la salida curl nos muestra el progreso.

La salida del comando "curl latest_kernel.zip" en una ventana de terminal."curl https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.9.tar.xz > latest_kernel.zip" command in a terminal window.

Publicidad

No podemos mostrarte una imagen del siguiente bit, porque es una secuencia de teclas. Escribes Ctrl+A, sueltas esas teclas y luego pulsas d para despegar la pantalla.

El proceso de descarga sigue en marcha pero la ventana que muestra la descarga desaparece. Vuelves a la ventana de terminal desde la que iniciaste la sesión screen. Un mensaje te indica que se ha desprendido una ventana screen etiquetada como 23167.pts-0.howtogeek.

Necesitas el número del inicio del nombre de la ventana para volver a pegarla. Si lo olvida, siempre puede utilizar la opción -ls (lista), como se muestra a continuación, para obtener una lista de las ventanas desprendidas:

screen -ls

El comando "screen -ls" en una ventana de terminal."screen -ls" command in a terminal window.

Cuando estés listo, puedes usar la opción -r (reattach) y el número de la sesión para reattach, así:

screen -r 23167

El comando "screen -3 23167" en una ventana de terminal."screen -3 23167" command in a terminal window.

Publicidad

La ventana que ha estado trabajando en segundo plano vuelve a su ventana de terminal como si nunca se hubiera ido.

Se restablece una sesión de pantalla en la ventana de terminal.

Si es un proceso que se va a ejecutar hasta su conclusión, acabará completándose. Si es un proceso continuo, eventualmente querrá terminarlo. De cualquier manera, cuando el proceso termina, puedes escribir exit para salir del screen. Alternativamente, puedes pulsar Ctrl+A, y luego K para matar a la fuerza una ventana.

Escribe el siguiente comando:

exit

El comando "exit" en una ventana de terminal."exit" command in a terminal window.

Volverás a tu ventana de terminal anterior, que seguirá mostrando el comando que utilizaste para volver a adjuntar la ventana. Debido a que cerramos nuestra única ventana desprendida, obtenemos un mensaje de que screen está terminando.

El mensaje de terminación del comando "screen" en una ventana de terminal."screen" command terminating message in a terminal window.

Relacionado: Cómo usar curl para descargar archivos desde la línea de comandos de Linux

Usando sesiones de pantalla con nombre

Puede usar la opción -S (nombre de sesión) para nombrar su screen sesión. Si utilizas un nombre memorable en lugar de la identidad numérica de la sesión, es más cómodo volver a conectarse a una sesión. Escribimos lo siguiente para nombrar nuestra sesión «bigfile»:

screen -S bigfile

El comando "screen -S bigfile" en una ventana de terminal."screen -S bigfile" command in a terminal window.

Publicidad

Cuando screen lanza nuestra sesión, vemos una ventana en blanco con un prompt de comandos. Vamos a descargar un archivo grande, así que podemos usar un proceso de larga duración como ejemplo.

Escribimos lo siguiente:

curl http://ipv4.download.thinkbroadband.com/1GB.zip > bigfile.zip

El comando "curl bigfile.zip" en una ventana de terminal."curl http://ipv4.download.thinkbroadband.com/1GB.zip > bigfile.zip" command in a terminal window.

Cuando se inicie la descarga, pulsamos Ctrl+A, y luego pulsamos D para desconectar la sesión. Escribimos lo siguiente para usar la opción -ls (lista) con screen para ver los detalles de nuestra sesión desprendida:

screen -ls

El comando "screen -ls" en una ventana de terminal."screen -ls" command in a terminal window.

Detrás del identificador numérico (23266), vemos el nombre de nuestra sesión (bigfile). Escribimos lo siguiente, incluyendo el nombre de la sesión, para volver a adjuntarla:

screen -r bigfile

El comando "screen -r bigfile" en una ventana de terminal."screen -r bigfile" command in a terminal window.

Nos volvemos a conectar a nuestra ventana de descarga y vemos que la descarga larga sigue en curso.

Salida de la descarga de Curl en una sesión de pantalla reatada en una ventana de terminal.

Publicidad

Cuando la descarga está completa, escribimos exit para cerrar la ventana de la sesión.

Usando pantalla con múltiples ventanas

Hasta ahora, hemos usado screen para colocar un solo proceso en segundo plano en una ventana desvinculada. Sin embargo, screen es capaz de hacer mucho más que eso. A continuación, ejecutaremos unos cuantos procesos que nos permitirán monitorizar algunos aspectos de nuestro ordenador.

Escribimos lo siguiente para iniciar una sesión de pantalla llamada «monitor»:

screen -S monitor

El comando "screen -S monitor" en una ventana de terminal."screen -S monitor" command in a terminal window.

En el prompt de comandos de nuestra nueva sesión de ventana, lanzaremos dmesg y utilizaremos las opciones -H (lectura humana) y -w (esperar nuevos mensajes). Esto mostrará los mensajes del buffer del kernel; los nuevos mensajes aparecerán a medida que se produzcan.

Escribimos lo siguiente:

dmesg -H -w

El comando "dmesg -H -w" en una ventana de terminal."dmesg -H -w" command in a terminal window.

Publicidad

Los mensajes existentes aparecen. No se nos devuelve al símbolo del sistema porque dmseg está a la espera de nuevos mensajes, y los mostrará a medida que vayan llegando.

La salida de "dmsesg" en una ventana de terminal."dmsesg" output in a terminal window.

Relacionado: Cómo usar el comando dmesg en Linux

Queremos ejecutar otra aplicación, por lo que necesitamos una nueva ventana screen. Pulsamos Ctrl+A, y luego C para crear una nueva ventana. Vamos a utilizar watch para ejecutar repetidamente vmstat, de forma que obtengamos una visualización actualizada frecuentemente del uso de la memoria virtual en nuestro ordenador.

En el nuevo símbolo del sistema, escribimos lo siguiente:

watch vmstat

El comando "watch vmstat" en una ventana de terminal."watch vmstat" command in a terminal window.

La salida vmstat aparece y se actualiza cada dos segundos.

La salida "vmstat" en una ventana de terminal."vmstat" output in a terminal window.

Nuestros dos procesos están ahora en ejecución. Para saltar entre las ventanas screen, se pulsa Ctrl+A, y el número de la ventana. La primera que creamos es la ventana cero (0), la siguiente es la ventana 1, y así sucesivamente. Para saltar a la primera ventana (la dmesg), pulsamos Ctrl+A y 0.

Volver a la pantalla "dmesg" en una ventana de terminal."dmesg" screen in a terminal window.

Si pulsamos Ctrl+A y 1, nos devuelve a la ventana vmstat.

Volver a la pantalla "vmstat" en una ventana de terminal."vmstat" screen in a terminal window.

Publicidad

¡Esto es muy ingenioso! Podemos pulsar Ctrl+A, y luego D para separarnos de esta sesión; podemos volver a conectarnos más tarde. Ambas sesiones seguirán funcionando. De nuevo, para cambiar entre las ventanas, pulsamos Ctrl+A y el número (0 o 1) de la ventana a la que queremos cambiar.

Vamos al siguiente paso y veamos ambas pantallas en una sola ventana. Al hacer esto, estirarás la ventana de tu terminal hasta un tamaño que haga útil este paso. Nuestros ejemplos están limitados al tamaño de nuestras capturas de pantalla, por lo que nuestras ventanas se verán un poco apretadas.

Para hacer esto, presionamos Ctrl+A, y luego Shift+S (se requiere una «S» mayúscula).

La ventana se divide en dos «regiones.»

Una sesión de la ventana "pantalla" se divide en dos regiones horizontales en una ventana de terminal."screen" window session split into two horizontal regions in a terminal window.

La región superior sigue mostrando vmstat, y la región inferior está en blanco. El cursor está resaltado en la captura de pantalla de abajo. Para moverlo a la región inferior, pulsamos Ctrl+A, y luego Tab.

Una sesión de la ventana "pantalla" dividida en dos regiones horizontales con el cursor en la región inferior en una ventana de terminal."screen" window session split into two horizontal regions with cursor in the bottom region in a terminal window.

Publicidad

El cursor se mueve a la región inferior, que realmente es sólo un espacio vacío. No es un shell, por lo que no podemos escribir nada en él. Para obtener una pantalla útil, pulsamos Ctrl+A, y luego pulsamos «0» para mostrar la ventana dmesg en esta región.

La sesión de "pantalla" con un panel dividido horizontalmente que muestra un proceso diferente en cada región en una ventana de terminal."screen" session with a horizontal split pane showing a different process in each region in a terminal window.

Esto nos da ambas salidas en vivo en una ventana dividida. Si pulsamos Ctrl+A y D para separar la ventana, y luego la volvemos a unir, perderemos la vista del panel dividido. Sin embargo, podemos restaurarla con los siguientes atajos de teclado:

  • Ctrl+A, S: Dividir la ventana horizontalmente.
  • Ctrl+A, Tab: Mover a la región inferior.
  • Ctrl+A, 0: Mostrar el cero de la ventana en la región inferior.
  • Podemos llevar las cosas incluso un paso más allá. Ahora dividiremos el panel inferior verticalmente, y añadiremos un tercer proceso a la pantalla. Con el cursor en la región inferior, pulsamos Ctrl+A y C para crear una nueva ventana con un shell en ella. La región inferior muestra la nueva ventana y nos da un prompt de comandos.

    Una sesión de "pantalla" con un panel dividido horizontalmente que muestra una nueva ventana en la región inferior en una ventana de terminal."screen" session with a horizontal split pane showing a new window in the lower region in a terminal window.

    A continuación, ejecutamos el comando df para comprobar el uso del sistema de archivos:

df

Una sesión de "pantalla" con un panel dividido horizontalmente, y "df" escrito en la región inferior en una ventana de terminal."screen" session with a horizontal split pane, and "df" typed in the lower region in a terminal window.

Publicidad

Cuando veamos que se está ejecutando df, pulsamos Ctrl+A y el carácter pipa (|). Esto divide la región inferior verticalmente. Pulsamos Ctrl+A y Tabulador para pasar a la nueva región. A continuación, pulsamos Ctrl+A y 0 para mostrar la ventana dmesg.

Una sesión de "pantalla" que muestra tres paneles en una ventana de terminal."screen" session showing three panes in a terminal window.

También puedes moverte de región en región, y añadir más divisiones verticales u horizontales. Aquí hay más combinaciones de teclas útiles:

  • Ctrl+A: salta hacia adelante y hacia atrás entre la región actual y la anterior.
  • Ctrl+A, Q: cierra todas las regiones excepto la actual.
  • Ctrl+A, X: Cierra la región actual.

Usando la pantalla sobre SSH

Con screen, puedes iniciar una sesión de ventana, separarla para que siga funcionando en segundo plano, cerrar o volver a entrar y volver a unir la sesión.

Vamos a realizar una conexión SSH a nuestro ordenador desde otro diferente con el comando ssh. Tenemos que proporcionar el nombre de la cuenta con la que nos vamos a conectar y la dirección del ordenador remoto.

Para nuestro ejemplo, escribimos lo siguiente:

ssh [email protected]

El comando "ssh dave@192.168.4.30" en una ventana de terminal."ssh dave@192.168.4.30" command in a terminal window.

Publicidad

Después de autenticarnos en el ordenador remoto y de iniciar sesión, escribimos lo siguiente para iniciar una sesión screen llamada «ssh-geek»:

screen -S ssh-geek

El comando "screen -S ssh-geek" en una ventana de terminal."screen -S ssh-geek" command in a terminal window.

Para la demostración, ejecutaremos top en la ventana screen, pero podrías iniciar cualquier proceso de larga duración o interminable.

Escribimos lo siguiente:

top

El comando "top" en una ventana de terminal."top" command in a terminal window.

Una vez que top se está ejecutando en la ventana, pulsamos Ctrl+A, y luego D para desprender la ventana.

El proceso "top" ejecutándose en una ventana "pantalla" en una ventana de terminal."top" process running in a "screen" window in a terminal window.

Volvemos a la ventana de terminal original y remota.

El usuario vuelve a su ventana de terminal original

Si escribimos exit, como se muestra a continuación, se desconecta la sesión SSH y volvemos a nuestro ordenador local:

exit

El comando "exit" en una ventana de terminal."exit" command in a terminal window.

Escribimos lo siguiente para volver a conectarnos:

ssh [email protected]

El comando "ssh dave@192.168.4.30" en una ventana de terminal."ssh dave@192.168.4.30" command in a terminal window.

Publicidad

Después de que nos hayamos reconectado y hayamos iniciado sesión, podemos escribir lo siguiente para volver a conectar la screen sesión:

screen -r ssh-geek

El comando "screen -r ssh-geek" en una ventana de terminal."screen -r ssh-geek" command in a terminal window.

Ahora estamos reconectados a nuestra instancia aún en ejecución de top.

El proceso "top" ejecutándose en una ventana de terminal."top" process running in a terminal window.

Esto es genial si quieres iniciar un proceso en una máquina, y luego retomarlo donde lo dejaste en otra.

RELACIÓN: Cómo crear e instalar claves SSH desde el shell de Linux

Compartir una sesión de pantalla

También puedes usar una sesión screen para permitir que dos personas vean e interactúen con la misma ventana. Supongamos que alguien que ejecuta Fedora en su ordenador quiere conectarse a nuestro servidor Ubuntu.

Escribiría lo siguiente:

ssh [email protected]

El comando "ssh dave@192.168.4.30" en una ventana de terminal."ssh dave@192.168.4.30" command in a terminal window.

Después de conectarse, inicia una sesión de pantalla llamada «ssh-geek» utilizando la opción -S (nombre de la sesión). También utiliza las opciones -d (detach) y -m (enforced creation) para crear una nueva screen sesión que ya está separada.

Escribe lo siguiente:

screen -d -m -S ssh-geek

El comando "screen -d -m -S ssh-geek" en una ventana de terminal."screen -d -m -S ssh-geek" command in a terminal window.

Publicidad

Escribe lo siguiente, utilizando la opción -X (modo multipantalla) para adjuntar la sesión:

screen -X ssh-geek

El comando "screen -X ssh-geek" en una ventana de terminal."screen -X ssh-geek" command in a terminal window.

En un ordenador Manjaro, otra persona se conecta al ordenador Ubuntu con las mismas credenciales de cuenta, como se muestra a continuación:

ssh [email protected]

El comando "ssh dave@192.168.4.1" en una ventana de terminal."ssh dave@192.168.4.1" command in a terminal window.

Una vez conectada, escribe el comando screen y utiliza la opción -X (modo multipantalla) para unirse a la misma sesión de la ventana, así:

screen -X ssh-geek

El comando "screen -X ssh-geek" en una ventana de terminal."screen -X ssh-geek" command in a terminal window.

Ahora, cualquier cosa que escriba cualquiera de las dos personas, la otra la verá. Por ejemplo, cuando una persona emite el comando «date», ambos lo ven mientras lo escriben, así como su salida.

El comando "date" en una ventana de terminal."date" command in a terminal window.

Salida del comando "date" en una ventana de terminal."date" command in a terminal window.

Publicidad

Ambas personas están ahora compartiendo una sesión de screen que se está ejecutando en un ordenador remoto de Ubuntu.

Para una pieza de software que vio la luz por primera vez en 1987, screen sigue siendo un buen golpe de productividad. Familiarizarse con él será un tiempo bien invertido!

Relacionado: 37 comandos importantes de Linux que deberías conocer

Dave McKay
Utilizó por primera vez los ordenadores cuando la cinta de papel perforada estaba de moda, y ha estado programando desde entonces. Después de más de 30 años en la industria de la informática, ahora es un periodista de tecnología a tiempo completo. A lo largo de su carrera, ha trabajado como programador independiente, director de un equipo internacional de desarrollo de software, gestor de proyectos de servicios informáticos y, más recientemente, como responsable de protección de datos. Dave es un evangelista de Linux y defensor del código abierto.Read Full Bio »

Navegación de entradas

¿Por qué mis suplementos me provocan náuseas?
¿Qué es el mal de altura?

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Entradas recientes

  • Firebush (Español)
  • 9 mejores vitaminas y suplementos para perros para mejorar su salud
  • Previsión de tasas de CD para 2021: Las tasas probablemente se mantendrán bajas, pero podrían aumentar más adelante en el año
  • Dolor pélvico crónico y prostatitis: síntomas, diagnóstico y tratamiento
  • Juegos y actividades saludables para niños | UIC Online Informatics
  • Cervezas de trigo (americanas)
  • Los beneficios de la lactancia materna después de un año
  • ¿Es seguro tirar los posos del café por el fregadero?
  • Enfriarse después de hacer ejercicio
  • Nuestro trabajo

Meta

  • Acceder
  • Feed de entradas
  • Feed de comentarios
  • WordPress.org

Archivos

  • marzo 2021
  • febrero 2021
  • enero 2021
  • diciembre 2020
  • DeutschDeutsch
  • NederlandsNederlands
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • PolskiPolski
  • 日本語日本語
©2021 Info Cafe | WordPress Theme by SuperbThemes.com