Screen, múltiples consolas en una

Cuando accedemos remotamente por telnet o ssh a un sistema se suele obtener acceso a una única shell donde ejecutar comandos. Por ejemplo, si queremos ejecutar simultáneamente el lector de correo electrónico mutt y navegar por directorios para copiar o mover archivos, vamos a tener que realizar 2 conexiones para disponer de 2 shells: En una ejecutaríamos mutt mientras usamos la otra para navegar por los directorios.

Adicionalmente, si perdemos la conexión con el servidor no podremos recuperar el estado en el que se encontraban las terminales. Por ejemplo, si estábamos comprimiendo un directorio y se corta la conexión, esta acción se quedará a medias y tendremos que repetirla.

Sin embargo, si hacemos uso de ‘screen‘ podemos solventar de un plumazo esos dos inconvenientes:

  • Únicamente nos bastará con realizar una conexión dado que este programa nos permite mantener diversas “ventanas” virtuales dentro de la misma terminal. El concepto es similar a cuando tenemos un único navegador con diferentes pestañas.
  • Si la conexión se pierde, screen continuará funcionando y al volver a reconectar con el servidor podremos recuperar el estado original

Lo mejor es experimentar con screen para comprobar su utilidad:

sudo apt-get install screen
screen -R -D

El comando anterior restaurará la sesión anterior de screen en caso de existir o, de lo contrario, creará una sesión nueva. Acto seguido tendremos acceso a una shell como si nada hubiese ocurrido, no obstante ahora podemos utilizar diversas combinaciones de teclas para crear nuevas ventanas o realizar otras acciones:

  • ctrl-a c
  • Crear una nueva ventana con una shell

  • ctrl-a k
  • Destruye la ventana actual

  • ctrl-a n
    ctrl-a p
  • Ir a la ventana siguiente o anterior

  • ctrl-a ctrl-a
  • Ir a la última ventana visualizada

  • ctrl-a A
  • Cambiar el título de la ventana actual

  • ctrl-a ESC
  • Ver el historial (scrolling buffer)

  • ctrl-a S
  • Divide la pantalla horizontalmente

  • ctrl-a |
  • Divide la pantalla verticalmente

  • ctrl-a tab
  • Cambia la división activa de la pantalla

  • ctrl-a X
  • Cierra la división activa de la pantalla

  • ctrl-a a […]
  • Envia el comando […] a una sesión de screen que se esté ejecutando dentro de screen

  • ctrl-a x
  • Bloquea terminal

  • ctrl-a d
  • Desasignar screen (recuperar después con screen -R -D)

Adicionalmente, podemos realizar pantallazos o llevar un registro de todos los comandos que ejecutamos:

  • ctrl-a h
  • Guarda pantallazo en “hardcopy.n”

  • ctrl-a H
  • Inicia/para registro de la ventana actual en “screenlog.n”

O incluso podemos compartir una terminal entre diversos usuarios de forma remota con screen.

Finalmente, si deseamos tener una barra inferior donde aparecerá el nombre de las diferentes ventanas, así como la carga del sistema y la hora actual (entre otras cosas), podemos modificar el fichero de configuración ~/.screenrc:

screen -t shell 0
#screen -t shell 0 motd+shell
#screen -t shell2    1
#screen -t server    2
#screen -t Mail 9   tail -f /var/log/messages

select 0
shelltitle "shell"

# skip the startup message
startup_message off

# go to home dir
chdir

# Automatically detach on hangup.
autodetach on

# Change default scrollback value for new windows
defscrollback 1000

# Turns off alternate screen switching in xterms,
# so that text in screen will go into the xterm's scrollback buffer:
termcapinfo xterm* ti@:te@
altscreen on

# start with visual bell as default
vbell on
vbell_msg "bell on %t (%n)"
activity "Activity in %t(%n)"

# Run a screensaver if there's nothing happening for a while.
#idle 600 eval "screen cmatrix -f -o -u 10" "idle 0"
idle 600 lockscreen

### White
#caption always "%{kW}%?%-Lw%?%{bw}%n*%f %t%?(%u)%?%{kW}%?%+Lw%? %= %{= Wk}%110`%109`%111` %H load: %l | %D %d-%m-%Y %0c:%s"

### Black
caption always "%{wk}%?%-Lw%?%{bw}%n*%f %t%?(%u)%?%{wk}%?%+Lw%? %= %{= kw}%110`%109`%111` %H load: %l | %D %d-%m-%Y %0c:%s"

# Keep vertical and horizontal splitting layout
layout save Desktop1
layout autosave on

2 thoughts on “Screen, múltiples consolas en una”

Leave a Reply

Your email address will not be published. Required fields are marked *