| Despabilando la MonoNeurona::Internet es de todos [Inicio] [Regresar] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
GNU/Linux \ Tutorial de GNU Screen Este artículo ha sido consultado en 879 ocasiones. autor: J. Santiago Hirschfeld <jsantiagoh @ yahoo.com.ar> IntroducciónScreen es una de las utilidades de Linux con mucho menos prestigio del que realmente merece, asi que el motivo de este tutorial es explicar que es GNU Screen, para que sirve y dar una nocion básica de su funcionamiento. Screen es algo asi como un window manager en consola, hay quienes le dicen multiplexador de terminales... sea como sea que quieran llamarlo, screen es una utilidad que permite tener en una sola ventana, varios programas de consola ejecutandose al mismo tiempo, por ejemplo: un shell de bash, Mutt, Irssi, elinks, Vim, etc. y permite cambiar entre ellos, copiar y pegar entre los distintos programas, separar la pantalla en varias ventanas para visualizar varios de estos programas al mismo tiempo, revisar la salida de los programas guardada en un log, recibir notificaciones cuando uno de estos programas escriba algo en pantalla y no solo eso, también permite desprender (dettach) la sessión de screen ejecutandose en ese momento y prenderla (reattach) en otra ubicación, asi por ejemplo: se puede abrir una sesión de screen en una consola, abrir todos los programas y comenzar a trabajar... después, desprenderla y cargar X y finalmente, se puede prender la sesión antes creada a una terminal y seguir trabajando en X o prenderla desde una sesión remota con ssh. Como dije al principio, GNU Screen es una gran herramienta y si bien quizás no sea de extensa utilidad para todos... merece ser conocida y ese es el motivo de este tutorial. InstalaciónNo voy a cubrir los pasos para la instalacion de screen, por lo menos no a esta altura del tutorial por que creo que toda distribución de Linux que se precie, deberia incluir en su listado de paquetes a Screen. Si se usa Gentoo Linux, basta hacer: # emerge screen Si se utiliza Archlinux: # pacman -Sy screen En Debian/Ubuntu: # apt-get install screen y deberia ser tan sencillo con cualquier otra distribución de GNU/Linux. Configuración básicaLa configuración de screen se hace por medio de un archivo de texto plano, como en la mayoria de los programas para Linux, este archivo es en la mayoría de los casos /etc/screenrc para la configuración global y ~/.screenrc para la configuración de cada usuario. Mi archivo de configuración de screen es el siguiente: Ejemplo 1. ~/.screenrc
unsetenv DISPLAY
screen -t Log 0 mtail -f -n 25 /var/log/everything/current
autodetach on
crlf off
deflogin off
defsilence off
hardcopy_append on
nethack off
startup_message off
vbell off
defutf8 off
defscrollback 1000
msgminwait 2
silencewait 15
shell -$SHELL
shelltitle "Shell"
hardstatus alwayslastline "%{b}[\
%{B}%H %{b}][%{w}%?%-Lw%?%{b}(%{W}%n*%f%t%?\
(%u)%?%{b})%{w}%?%+Lw%?%?\
%= %{b}][%{B} %d/%m %{W}%C%a %{b}]"
sorendition Wk
activity "%C -> %n%f %t Actividad!"
bell "%C -> %n%f %t Bell!~"
pow_detach_msg "CHAU"
vbell_msg " *beep* "
bind .
bind ^\
bind \\
bind m screen -t CenterICQ centericq
bind e screen -t Mutt mutt
bind g screen -t Gentoo elinks
www.gentoo.org
bind i screen -t IRC irssi
bind o screen -t Orpheus orpheus
bind r screen -t Root su -
bind v screen -t Vim vim
bind w screen -t WWW elinks
www.google.org
bind f screen -t FTP yafc
bind X lockscreen
msgwait 2
Principios básicos de usoUna vez que se ejecuta screen en un shell, lo que suele pasar (dependiendo de la configuración) es aparentemente nada, el prompt aparece en la esquina superior izquierda y la pantalla se limpia. Si esto pasa.... está ejecutando screen. Bienvenido. Una vez ejecutado, se puede usar esa shell como si fuera la anterior, con las mismas teclas y comandos.E s como cualquier shell, pero se está ejecutando "dentro" de screen. Lo primero que hay que saber es que todas las combinaciones de teclas que se vayan a dar a screen, comienzan con: CTRL-a Combinación. Escriba algunos comandos en la shell para probar que funciona y luego presione CTRL-a c esto es, presionar CTRL-a, soltar y luego presionar la c cuando se presiona CTRL-a screen interpreta esto como que la próxima combinación de teclas son enviadas hacia él, asi que cuando me refiera a las teclas de screen, voy a omitir el escribir CTRL-a previamente a la tecla. Entonces al enviarle la tecla c a screen, lo que se hace es crear una nueva ventana, osea, una nueva shell. En este momento una de las combinaciones más útiles es CTRL-a ? que muestra la ayuda de screen, con una lista de todas las combinaciones de teclas del programa. Manejando VentanasPuede presionar CTRL-w para ver momentaneamente la lista de ventanas abiertas, esto es: CTRL-a CTRL-w (presionando CTRL y sin soltarlo, presionar a luego w y finalmente soltar CTRL). En este momento, se están ejecutando dos shells en la misma sesión de screen, para cambiar de ventanas, en screen existen varios métdos:
Copiando y Pegando TextoPara copiar texto de una ventana de screen y poder copiarlo en otra, se utiliza la combinación CTRL-a [ entonces screen entra en modo copia. Moviendose con las teclas del cursor, se posiciona donde comienza la region a copiar, se presiona espacio y se mueve el cursor con las teclas hasta llegar al final de la región a copiar, se presiona enter y es todo, el texto seleccionado está ahora copiado en screen. Para pegar el texto previamente copiado, simplemente se presiona la combinación CTRL-a] y el texto se pega. Prendiendo y Desprendiendo sesionesCasi sin lugar a dudas, la opción más potente de screen es la de desprender y prender sesiones. Esto significa que se puede crear una con por ejemplo el emacs y irssi en el trabajo y cuando se llega a casa, simplemente conectandose por ssh al servidor del trabajo y prendiendo la sesion de screen creada anteriormente, se tiene todo como estaba antes, incluso, los programas, se siguen ejecutando mientras la sesion esté desprendida. Otro ejemplo, podria ser, el de poner a realizar una compilacion larga, como el kernel en una terminal de X, si por algún motivo se cuelga X, perderiamos la compilación, si esto se hace dentro de una sesión de screen, basta prender la sesion nuevamente y se vuelve a tener el control de la compilación, que nunca se detuvo, pese a que la terminal se haya cerrado. Entonces, ¿Cómo desprender una sesion de screen que se está utilizando? Simplemente con la combinación CTRL-a d en screen. La sesión se desprende y se vuelve a ver la shell desde donde se ejecutó screen por primera vez. Si en esta shell se ejecuta:
username@hostname ~$ screen -list Para prender la sesion de screen, ejecutar: username@hostname ~$ screen -r Dividiendo la ventanaScreen permite además, dividir la ventana actual en dos o más subventanas, permitiendo ver la salida de dos o más programas al mismo tiempo y cambiando el control del programa de uno a otro con una simple pulsación de teclas. Para dividir la ventana actual en dos, se utiliza la combinación CTRL-a S. Con esto se crea una nueva ventana que inicialmente no tiene algo dentro. Se puede cambiar entre las subventanas con la combinación CTRL-a CTRL+i y una vez en la subventana se puede cambiar a cualquier ventana activa de screen de la manera convencional para ubicar en esa subventana la aplicacion que se desee. Para aumentar el tamaño de la subventana actual se utiliza la combinación CTRL-a + y para disminuirlo se utiliza CTRL-a -. Finalmente para que la subventana actual sea la única ventana en la sesión descreen se utiliza CTRL-a Q. Resumen de comandos y teclasTabla 1. Resumen de comandos y teclas de GNU Screen.
Notas finalesFinalmente, la mayor fuente de ayuda sobre screen es su excelente página del manual a la cual se accede escribiendo manscreen en el promt del shell. Última actualización: 2007-04-29 10:56:58-05 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Este trabajo está licenciado bajo la MonoNeurona Commons License. 2002-2008 © :: Colectivo MonoNeurona.org :: |