En el artículo anterior ya hablé de GNU Screen, un multiplexor de terminales. Qué bien queda ese nombre 🙂 Realmente significa que puedes trocear una terminal, dentro de una ventana, en otras n terminales. ¿Para qué puede servir ésto? Yo encontré esta utilidad a partir de una necesidad: abrir Vim y una terminal en la misma ventana. Es decir, en la parte superior de la ventana quería tener Vim y en la parte inferior una terminal con bash. Alguien podría decir que eso mismo se puede hacer abriendo dos ventanas. Cierto, pero noto mayor integración y aprovechamiento del espacio en pantalla con una sola ventana y una terminal multiplexada en dos (aparte de que con screen puedes hacer muchas otras cosas, como suspender una sesión desde un ordenador y retomarla desde otro ! ).
¿Cómo partir la terminal en dos para que quede tal y como se ve en la figura?
1) Desde la consola, iniciamos screen
$ screen |
2) Lanzamos vim
3) Entramos en modo comando (dentro de screen se hace pulsando Ctrl+a , y tecleando luego «:split»
4) Pasamos a la nueva «terminal» o «ventana» inferior, pulsando Ctrl+a y luego TAB (tabulador). Esta combinación de teclas nos permite pasar de una ventana a otra.
5) En la terminal multiplexada inferior, pulsamos Ctrl+a y luego c (mnemotécnico: «c» de Create) para crear una nueva sesión bash.
Muy bueno, en el trabajo tengo un compañero que usa screen constantemente, y es una gozada verle trabajar, por favor, queremos más manuales de screen
Hola, una humilde sugerencia.
Yo también trabajo con vim y un consola, y lo cierto es que me parece la manera ideal 😀
Sin embargo lo hago empleando Guake, una aplicación que permite tener una consola que ‘baja del techo’ como las antiguas terminales del Quake, Half-Life…
Esto me permite tener el editor al 100% de pantalla (a veces incluso en pantalla completa con F11) y emplear la consola solo cuando quiero.
Un saludo 😀
Con
screen -x
puedes compartir un terminal (dos usuarios viendo y tecleando a la vez en la misma consola virtual).
No tengo mucha experiencia con screen, pero en su día escribí
unas notas sobre su uso. Las comparto con vosotros:
Ventajas:
– Aplicación sencilla, pero muy potente y configurable.
– Ofrece la posibilidad de trabajar con varias terminales al
mismo tiempo (multiplexación). En este sentido, hay otras
opciones mejores («terminator», por ejemplo) pero quizá no
tan estándar.
– Ofrece la posibilidad de guardar estado de la sesión, de
tal modo que podemos desconectarnos del sistema y más
adelante volver a conectarnos recuperando la sesión de
trabajo. Es interesante ya que nos permite mantener
sesiones remotas aunque apaguemos nuestro equipo, se
desconecte automaticamente la sesión ssh (algunos
servidores establecen un tiempo máximo) o cambiemos de
equipo cliente (trabajo – casa).
– Integración con Vim: comparte por ejemplo la idea de
buffers (terminales en el caso de screen y ficheros en el
caso de buffers) y algunas combinaciones de teclas.
Procedimiento de trabajo:
– Abrir un terminal de tipo screen.
$ screen
Como resultado, en el sistema se creará un proceso de nombre
«screen» y creará un terminal asociado a ese proceso.
– Múltiples terminales dentro de un proceso screen (multiplexación de
sesiones):
En caso de tener que realizar varias tareas en paralelo,
se puede abrir más terminales en paralelo (además del
primero, que se abre por defecto). En principio, los
terminales se organizan como si fueran solapas (tabs),
pero sin el control gráfico que permite cambiar de una a
otra.
– Crear más terminales: dentro del terminal lanzar
nuevamente el comando screen (o ctrl-a + c).
Para moverse entre los terminales abiertos:
– ctrl-a + space o ctrl-n: recorre la lista de terminales
– ctrl-a + num_terminal: ir directamente al número
de terminal
– ctrl-a + » : ver la lista de terminales y moverse de una a otra.
– ctrl-a + ctrl-a: swap entre las dos últimas
terminales con focus
– Listar terminales abiertas: ctrl-a + » o ctrl-a + w.
– Renombrar una terminal: ctrl-a + A . Muy útil para distinguirla
del resto según su uso; «Vim»,»remoto hostA»,»compilar», …
– Split
– Si deseamos ver varios terminales al mismo tiempo,
se puede dividir la pantalla horizontalmente =>
ctrl-a+split (o ctrl-S). Dentro de cada división
podemos movernos entre todas las terminales
abiertas como se describe en los puntos
anteriores.
– Para cambiar el focus entre las divisiones
horizontales: ctrl-a + TAB
– Para redimensionar: ctrl-a + :resize
– Para cerrar visualización ventanas divididas
horizontalmente (no los terminales) ctrl-a+X
– Cerrar un terminal abierto dentro de una sesión: comando exit o ctrl-d
– Desligarse de la terminal screen (sin cerrarla): dettach.
Secuencia de teclas: ctrl-a + d. Si se cierra la conexión se
logra el mismo efecto (ver fichero .screenrc más adelante),
aunque no se recomienda esta última opción, (no es conveniente
cerrar la conexión de este modo).
Tenemos que tener en cuenta que cuando nos desligamos de un
proceso screen, dejamos ese proceso screen activo en el
sistema, incluso aunque cerremos la sesión ssh con ese
sistema. Más adelante, podemos establecer una nueva sesión ssh
y recuperar el proceso screen, continuando en el punto en el
que lo habíamos dejado.
– Recuperar una sessión screen (attach)
$ screen -r
Sólo podremos recuperar la sesión screen mientras ese proceso
siga activo en el sistema. Si hemos reiniciado el sistema, ese
proceso ya no existirá.
– Cerrar una sesión screen: salir de cada una de las terminales
abiertas dentro del proceso screen
– Varias procesos screen: es posible tener varios procesos
screen en ejecución (ejecutando varias veces el comando screen
desde fuera de cualquier terminal). En este caso se recomienda
darle un nombre al crear el proceso screen:
$ screen -S nombre_terminal
– Listar las sesiones screen en ejecución:
$ screen -ls
– Para recuperar una sesion (cuando hay varias):
$ screen -D -r PID_proceso (o el nombre, si se le ha dado un nombre al
ejecutar screen)
Por último, comentaros que screen puede tener un fichero de
configuración «.screenrc» (en el $HOME del usuario) en el que se
pueden indicar opciones interesantes:
Ejemplo:
escape ^Tt # Para cambiar la tecla de control, en lugar de ctrl+a.
# Tema delicado, ya que la combinación seleccionada
# puede entrar en conflicto
startup_message off # Para que no aparezca la pantalla inicial de screen
hardstatus lastline «SCREEN: %-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%<"
# linea de status que informa de la lista de terminales (número
# y nombre), junto con una marca informando del terminal que
# actualmente tiene el focus
Otras opciones
autodetach on # Autodetach session on hangup instead of terminating screen completely (para evitar que la sesión se pierda al cerrar la ventana "sin querer").
@Roberto: excelente comentario. ¡Es mejor que el propio post! 🙂 Gracias.
Buen comando, no lo conocía pero mis escritorios van ganar en usabilidad.
Muchas gracias, buen post!
Excelente comando, no lo habia escuchado antes, pero ahora que lo veo me parece fabuloso. Cada dia me encanta mas la consola, lo tiene todo (Entre lo que resalto, el vim, el grep, el sed y otros comandos excelentes)