Con Linux screen
comando, puede empujar las aplicaciones de terminal en ejecución a un segundo plano y moverlas hacia adelante cuando desee verlas. Además es compatible con pantallas divididas y funciona a través de conexiones SSH, inclusive después de que se desconecta y se torna a conectar.
RELACIONADO: 10 comandos básicos de Linux para principiantes
¿Qué es el comando de pantalla?
los screen
el comando es un multiplexor terminaly está absolutamente repleto de alternativas. Decir que puede hacer mucho es el abuelo de los eufemismos. La pagina man se extiende a más de 4.100 líneas.
Los siguientes son los casos más comunes en los que usaría el screen
comando, y los cubriremos más en este post:
- La operación estándar es crear una nueva ventana con un shell en ella, ejecutar un comando y posteriormente empujar la ventana al fondo (llamado «separar»). Cuando desee ver cómo está funcionando su procedimiento, puede tirar de la ventana al primer plano nuevamente («volver a adjuntar») y usarla nuevamente. Esto es ideal para procesos largos que no desea terminar accidentalmente al cerrar la ventana de terminal.
- Una vez que tienes un
screen
sesión en ejecución, puede crear nuevas ventanas y ejecutar otros procesos en ellas. Puede saltar fácilmente entre ventanas para monitorear su progreso. Además puede dividir la ventana de su terminal en regiones verticales u horizontales y mostrar sus diversasscreen
ventanas en una ventana. - Puede conectarse a una máquina remota, iniciar una
screen
sesión y lanzar un procedimiento. Puede desconectarse del host remoto, volver a conectarse y su procedimiento seguirá ejecutándose. - Puedes compartir un
screen
sesión entre dos conexiones SSH diferentes para que dos personas puedan ver lo mismo, en tiempo real.
Instalación de pantalla
Instalar screen
en ubuntu, use este comando:
sudo apt-get install screen
Instalar screen
en Manjaro, use el siguiente comando:
sudo pacman -Sy screen
En Fedora, escribe lo siguiente:
sudo dnf install screen
Introducción a la pantalla
Para comenzar screen
, simplemente escríbalo como se muestra a continuación y presione Enter:
screen
Verá una página con información de licencia. Puede presionar la barra espaciadora para leer la segunda página o Enter para regresar al símbolo del sistema.
Se queda en el símbolo del sistema y no parece que haya sucedido mucho. A pesar de esto, ahora está ejecutando un shell dentro de un emulador de terminal multiplexado. ¿Por qué es esto algo bueno? Bueno, comencemos un procedimiento que llevará mucho tiempo completar. Descargaremos el código fuente del último kernel de Linux y lo redirigiremos a un archivo llamado latest_kernel.zip
.
Para hacerlo, escribimos lo siguiente:
curl https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.5.9.tar.xz > latest_kernel.zip
Comienza nuestra descarga y el curl
La salida nos muestra el progreso.
No podemos mostrarle una imagen del siguiente bit, porque se trata de una secuencia de teclas. Escribe Ctrl + A, suelta esas teclas y posteriormente presiona d para separar la pantalla.
El procedimiento de descarga aún se está ejecutando, pero la ventana que muestra la descarga se eliminó. Volverá a la ventana de terminal desde la que lanzó el screen
sesión. Un mensaje le dice que un screen
ventana etiquetada 23167.pts-0.systempeaker
se ha desprendido.
Necesita el número desde el inicio del nombre de la ventana para volver a adjuntarlo. Si lo olvida, siempre puede usar el -ls
(lista) opción, como se muestra a continuación, para obtener una lista de las ventanas separadas:
screen -ls
Cuando esté listo, puede utilizar el -r
(volver a adjuntar) y el número de la sesión para volver a adjuntarlo, así:
screen -r 23167
La ventana que ha estado funcionando en segundo plano ahora vuelve a la ventana de su terminal como si nunca se hubiera ido.
Si se trata de un procedimiento que se ejecutará hasta su conclusión, eventualmente se completará. Si es un procedimiento continuo, eventualmente querrá terminarlo. De cualquier manera, cuando finalice el procedimiento, puede escribir exit
para salir de la screen
. Alternativamente, puede presionar Ctrl + A y posteriormente K para matar a la fuerza una ventana.
Escriba el siguiente comando:
exit
Volverá a la ventana de su terminal anterior, que seguirá mostrando el comando que utilizó para volver a adjuntar la ventana. Debido a que cerramos nuestra única ventana separada, recibimos un mensaje que screen
está terminando.
RELACIONADO: Cómo utilizar curl para descargar archivos desde la línea de comandos de Linux
Uso de sesiones de pantalla con nombre
Puedes utilizar el -S
(nombre de sesión) opción para nombrar su screen
sesión. Si utiliza un nombre memorable en lugar de la identidad numérica de la sesión, es más conveniente volver a conectarse a una sesión. Escribimos lo siguiente para nombrar nuestra sesión «bigfile»:
screen -S bigfile
Cuando screen
inicia nuestra sesión, vemos una ventana en blanco con un símbolo del sistema. Vamos a descargar un archivo grande, por lo que podemos utilizar un procedimiento de larga duración como ejemplo.
Escribimos lo siguiente:
curl http://ipv4.download.thinkbroadband.com/1GB.zip > bigfile.zip
Cuando comienza la descarga, pulsamos Ctrl + A, y posteriormente pulsamos D para desconectar la sesión. Escribimos lo siguiente para utilizar el -ls
(lista) opción con screen
para ver los detalles de nuestra sesión separada:
screen -ls
Detrás del identificador numérico (23266), vemos el nombre de nuestra sesión (bigfile). Escribimos lo siguiente, incluido el nombre de la sesión, para volver a adjuntarlo:
screen -r bigfile
Nos volvemos a conectar a nuestra ventana de descarga y vemos que la descarga larga aún está en curso.
Cuando se completa la descarga, escribimos exit
para cerrar la ventana de la sesión.
Usando la pantalla con múltiples ventanas
Hasta ahora, hemos usado screen
para colocar un solo procedimiento en segundo plano en una ventana separada. A pesar de esto, screen
es capaz de hacer mucho más que eso. A continuación, ejecutaremos algunos procesos que nos permitirán monitorear algunos aspectos de nuestra computadora.
Escribimos lo siguiente para iniciar una sesión de pantalla llamada «monitor»:
screen -S monitor
En el símbolo del sistema en nuestra nueva sesión de ventana, lanzaremos dmesg
y utiliza el -H
(legible por humanos) y -w
(esperar mensajes nuevos) opciones. Esta voluntad mostrar los mensajes del búfer del kernel; aparecerán nuevos mensajes a medida que se produzcan.
Escribimos lo siguiente:
dmesg -H -w
Aparecen los mensajes existentes. No volvemos al símbolo del sistema debido a que dmseg
está esperando nuevos mensajes y los mostrará a medida que lleguen.
RELACIONADO: Cómo utilizar el comando dmesg en Linux
Queremos ejecutar otra aplicación, por lo que necesitamos una nueva screen
ventana. Pulsamos Ctrl + A, y posteriormente C para crear una nueva ventana. Vamos a utilizar watch
para correr repetidamente vmstat
, por lo que obtenemos una actualización frecuente visualización del uso de la memoria virtual en nuestra computadora.
En el nuevo símbolo del sistema, escribimos lo siguiente:
watch vmstat
los vmstat
La salida aparece y se actualiza cada dos segundos.
Nuestros dos procesos ahora se están ejecutando. Para saltar entre el screen
ventanas, presiona Ctrl + A, y el número de la ventana. La primera que creamos es la ventana cero (0), la próxima es la ventana 1, y así sucesivamente. Para saltar a la primera ventana (la dmesg
uno), pulsamos Ctrl + A y 0.
Si pulsamos Ctrl + A y 1, nos lleva de regreso al vmstat
ventana.
¡Eso es bastante ingenioso! Podemos presionar Ctrl + A, y posteriormente D para desconectarnos de esta sesión; podemos volver a unir más tarde. Ambas sesiones seguirán ejecutándose. Nuevamente, para cambiar entre las ventanas, pulsamos Ctrl + A y el número (0 o 1) de la ventana a la que queremos cambiar.
Vayamos al siguiente paso y veamos ambas pantallas en una ventana. Cuando haga esto, ampliará la ventana de su terminal a un tamaño que haga que este paso sea útil. Nuestros ejemplos están limitados al tamaño de nuestras capturas de pantalla, por lo que nuestras ventanas se verán un poco estrechas.
Para hacer esto, pulsamos Ctrl + A, y posteriormente Shift + S (se necesita una “S” mayúscula).
La ventana se divide en dos «regiones».
La región superior aún se muestra vmstat
y la región inferior está en blanco. El cursor está resaltado en la próxima captura de pantalla. Para moverlo a la región inferior, pulsamos Ctrl + A, y posteriormente Tab.
El cursor se mueve a la región inferior, que en realidad es solo un espacio vacío. No es un caparazón, por lo que no podemos escribir nada en él. Para obtener una pantalla útil, pulsamos Ctrl + A, y posteriormente pulsamos «0» para mostrar el dmesg
ventana en esta región.
Esto nos da ambas salidas en vivo en una ventana dividida. Si pulsamos Ctrl + A y D para separar la ventana, y posteriormente la volvemos a unir, perderemos la vista de panel dividido. A pesar de esto, podemos restaurarlo con los siguientes atajos de teclado:
- Ctrl + A, S: Divide la ventana horizontalmente.
- Ctrl + A, Pestaña: Muévase a la región inferior.
- Ctrl + A, 0: Ventana de visualización cero en la región inferior.
Podemos llevar las cosas inclusive un paso más allá. Ahora dividiremos el panel inferior verticalmente y agregaremos un tercer procedimiento 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 símbolo del sistema.
A continuación, ejecutamos el df
comando para comprobar el uso del sistema de archivos:
df
Cuando vemos df
corriendo, pulsamos Ctrl + A y el carácter de tubería (|)
. Esto divide la región inferior verticalmente. Pulsamos Ctrl + A y Tab para movernos a la nueva región. A continuación, pulsamos Ctrl + A y 0 para mostrar el dmesg
ventana.
Además puede moverse de una región a otra y agregar más divisiones verticales u horizontales. Aquí hay algunas combinaciones de teclas más útiles:
- Ctrl + A: Salta de un lado a otro entre la región actual y la anterior.
- Ctrl + A, Q: Cierre todas las regiones excepto la actual.
- Ctrl + A, X: Cierra la región actual.
Usando la pantalla sobre SSH
Con screen
, puede iniciar una sesión de ventana, desconectarla para que siga ejecutándose en segundo plano, cerrar sesión o volver a iniciarla y volver a conectar la sesión.
Hagamos un SSH conexión a nuestra computadora de uno distinto con el ssh
mando. Tenemos que proporcionar el nombre de la cuenta con la que nos vamos a conectar y la dirección de la computadora remota.
Para nuestro ejemplo, escribimos lo siguiente:
ssh [email protected]
Después de autenticarnos en la computadora remota e iniciar sesión, escribimos lo siguiente para iniciar una screen
sesión llamada «ssh-geek»:
screen -S ssh-geek
Para fines de demostración, ejecutaremos top
en el screen
ventana, pero puede iniciar cualquier procedimiento interminable o de larga duración.
Escribimos lo siguiente:
top
Una vez top
se está ejecutando en la ventana, pulsamos Ctrl + A, y posteriormente D para separar la ventana.
Regresamos a la ventana de terminal remota original.
Si escribimos exit
, como se muestra a continuación, desconecta la sesión SSH y volvemos a nuestra computadora local:
exit
Escribimos lo siguiente para volver a conectar:
ssh [email protected]
Después de volver a conectarnos e iniciar sesión, podemos escribir lo siguiente para volver a adjuntar el screen
sesión:
screen -r ssh-geek
Ahora estamos reconectados a nuestra instancia aún en ejecución de top
.
Esto es excelente si desea iniciar un procedimiento en una máquina y posteriormente continuar donde lo dejó en otra.
RELACIONADO: Cómo crear e instalar claves SSH desde el Shell de Linux
Compartir una sesión de pantalla
Además puede usar un screen
sesión para permitir que dos personas vean e interactúen con la misma ventana. Digamos que alguien que ejecuta Fedora en su computadora quiere conectarse a nuestro servidor Ubuntu.
Escribiría lo siguiente:
ssh [email protected]
Después de conectarse, inicia una sesión de pantalla llamada «ssh-geek» usando la opción -S (nombre de la sesión). Además utiliza el -d
(despegar) y -m
(creación forzada) opciones para crear un nuevo screen
sesión que ya está separada.
Escribe lo siguiente:
screen -d -m -S ssh-geek
Escribe lo siguiente, usando el -x
(modo multipantalla) para adjuntar la sesión:
screen -x ssh-geek
En una computadora Manjaro, otra persona se conecta a la computadora Ubuntu con las mismas credenciales de cuenta, como se muestra a continuación:
ssh [email protected]
Una vez que está conectada, escribe el screen
comando y utiliza la opción -X (modo multipantalla) para unirse a la misma sesión de ventana, así:
screen -X ssh-geek
Ahora, cualquier cosa que escriba una persona, la otra verá. A modo de ejemplo, cuando una persona emite el comando de fecha, ambos lo ven tal como se escribe, así como su salida.
Ambas personas ahora comparten un screen
sesión que se está ejecutando en una computadora Ubuntu remota.
Para un software que vio la luz por primera vez en 1987, screen
aún tiene un buen golpe de productividad. ¡Familiarizarse con él será un tiempo bien empleado!
RELACIONADO: 37 comandos importantes de Linux que debe conocer