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
- ctrl-a k
- ctrl-a n
ctrl-a p - ctrl-a ctrl-a
- ctrl-a A
- ctrl-a ESC
- ctrl-a S
- ctrl-a |
- ctrl-a tab
- ctrl-a X
- ctrl-a a […]
- ctrl-a x
- ctrl-a d
Crear una nueva ventana con una shell
Destruye la ventana actual
Ir a la ventana siguiente o anterior
Ir a la última ventana visualizada
Cambiar el título de la ventana actual
Ver el historial (scrolling buffer)
Divide la pantalla horizontalmente
Divide la pantalla verticalmente
Cambia la división activa de la pantalla
Cierra la división activa de la pantalla
Envia el comando […] a una sesión de screen que se esté ejecutando dentro de screen
Bloquea terminal
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
- ctrl-a H
Guarda pantallazo en “hardcopy.n”
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
Hace tiempo que trabajo con Screen, y recientemente he probado tmux. Me gusta de tmux la posibildad de trabajar con distintas ventanas. Te paso un artículo a qué te parece:
http://fedoratux.blogspot.com/2009/11/migrating-to-tmux-from-gnuscreen.html
Abrazos!
una de las mejores cosas de screen es que si se te cae la conexion cuando estabas ejecutando algo, el proceso no recive un kill -9 al morir el proceso padre