Custom Search
Bloggers Activos
Emacs como IDE para CakePHP aarkerio
La Negación del Viaje Lunar tonathiu
Porque los mononeurones si tenemos madre! blacksoul
BrunoFerías thot
The Art vendaval
Aclimatación extraterrestre ¿para qué? ahuramazdah
¿A que le tienes miedo? teosho
Sobre nazis, terror y medios tonathiu
Amenazas a la cuarta dimensión ¿de veras? ahuramazdah
Tarjeta Broadcom BCM94311MCG rev 02 teosho
Last Download
Segunda Fundación
Segunda Fundación
Pidiendo OpenSolaris 2008.5
vendaval
Sospechosismo
aarkerio
Slackware 12.1 Final
vendaval
Jaime Maussan da por auténtico video trucado del chupacabras hecho en Blender 3D
asarch
Linux hot girl
aarkerio
Calderón puede ser sujeto a juicio político, sostiene Carrancá
tonathiu
La desnutrición en México
aarkerio
Sistema Infalible
ordbal
Histórico
aarkerio
Nietzsche en la FCPyS
aarkerio
Google Groups Karamelo
Visit this group
GNU/Linux
GNU/Linux
Hacktivismo
Hacktivismo
Debian
Debian
NetBSD
NetBSD
WWW
WWW
Guia Linux
Guia Linux
Server Side
Server Side
Ofimatica
Ofimatica
Despabilando...
Despabilando...
Mundo Maya
Mundo Maya
Literatura
Literatura
Agora
Agora
Psicologia
Psicologia
Economia
Economia
Ambientalismo
Ambientalismo
Desarrollo
Desarrollo
Biologia
Biologia
Asesorías Gratuitas
Asesorías Gratuitas

Hacktivism

LinuxChix button

GNU/Linux \ Tutorial de GNU Screen
GNU/Linux
Tutorial de GNU Screen

Este artículo ha sido consultado en 736 ocasiones.

autor: J. Santiago Hirschfeld <jsantiagoh @ yahoo.com.ar>
Fuente: http://www.lugparana.com.ar/node/6
28 de Diciembre de 2003

Introducción

Screen 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ón

No 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ásica

La 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 uso

Una 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 Ventanas

Puede 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:

  1. CTRL-a n y CTRL-ap: para avanzar y retroceder entre las ventanas. Esto es CTRL-a n para ir a la ventana siguiente (next) y CTRL-a p para ir a la ventana anterior (previous).
  2. CTRL-a # : Para ir a la ventana número #.
  3. CTRL-a a : Para ir a la ventana que se visitó anteriormente.
  4. CTRL-a ' : Para poder teclear el número de ventana correspondiente e ir a ella cuando se pesiona enter.
  5. CTRL-a " : Para mostrar una lista seleccionable de ventanas creadas. Moviendose con las teclas de cursor se selecciona la ventana a la que se quiere ir y presionando enter, se va a esa ventana.

Copiando y Pegando Texto

Para 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 sesiones

Casi 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
There is a screen on:
1656.ttyp1.hostname (Detached)
1 Socket in /var/run/screen/S-username.

Para prender la sesion de screen, ejecutar:

username@hostname ~$ screen -r

Dividiendo la ventana

Screen 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 teclas

Tabla 1. Resumen de comandos y teclas de GNU Screen.

ComandoTeclaControlComentario
:breakb^B
:clearC Limpia la ventana
:colon: Permite escribir un comando que no tenga tecla asociada
:copy[^[ (esc)
:detachd^DDesprende la sesion actual de Screen
:digraph ^V
:dumptermcap.
:flowf^F
:hardcopyh
:help? Muestra la ayuda
:history{ }
:infoi^I
:killk K
:lastmsgm^M
:license,
:lockscreenx^X
:logH
:metaa
:monitorM Comienza a monitorizar la ventana avisando con un beep o con un flash (dependiendo de la variable vbell) cuando esta ventana modifica su contenido
:nextn space^N ^@Ir a la ventana siguiente
:other ^A
:pow_breakB
:pow_detachD
:prevp^H ^P p ^?Ir a la ventana anterior
:quit\
:readbuf
:redisplayl^L
:removebuf=
:screenc^CAbre una nueva ventana de screen, si no se especifica comando a ejecutar, ejecuta un shell
:select" '
:silence_
:source Se puede utilizar para releer el archivo de configuración modificado o leer otro
:suspendz^Z
:timet^T
:titleA
:vbell ^GActiva o desactiva la campana visual. En vez de emitir un beep, la ventana hace un flash.
:versionv
:widthW
:windowsw^WMuestra la lista de ventanas
:wrapr^R
:writebuf
:xoffs^S
:xonq^Q

Notas finales

Finalmente, 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

Printable version

Add comment:



Captcha




Que estas haciendo?
scarecrowscarecrow está:
Du hast?
3 hours, 37 minutes ago

der_teufelder_teufel está:
Ich habe einen Kater, aber nicht so schlecht...
11 hours, 11 minutes ago

rnstuxrnstux está:
Y yo un Abrazo.
1 day, 11 hours ago

saidjosesaidjose está:
Dandole su habrazote a mi santa madre que me soporta
1 day, 13 hours ago

dsquiddsquid está:
esperando a que este el pozole
1 day, 14 hours ago

asarchasarch está:
He cambiado NetBSD por Fedora 8, es que era muy "caliente"
2 days ago

Que estuvimos haciendo >>
Chipotle Software

En tu equipo tienes:
Sólo Windows
Windows y Linux
Sólo Linux
Linux y un BSD
Solaris, linux y BSD
Sólo MacacOS
Rapiditas
Problemas de Lenguaje en niños
10408 lecturas
Sexualidad infantil y juvenil
9165 lecturas
Anticoncepción de Emergencia
7837 lecturas
Rompiendo cualquier clave WEP en unos pocos minutos
6916 lecturas
Sinapsis y exocitosis
6224 lecturas
Mi primer CakePHP, mmmmm cakeee
5257 lecturas
Evolución filética en las hepáticas
4697 lecturas
BASH y Primeros Comandos
4010 lecturas
CakePHP II Active Record
3741 lecturas
Cómo convertirse en hacker
3619 lecturas
Add to Technorati Favorites

ir arriba
Quien confunde amor con sacrificio, desperdicia su vida. Schiller

The Queen is here Mozilla Firefox The Best DataBase CakePHP Framework XHTML GNU Hacker Chipotle Software

Too Cool for Internet Explorer