se que lo mio con la consola en ocasiones llega a ser preocupante (lo de ponerla como fondo de pantalla sobre todo), pero quien conozca el sistema mas alla del ‘nivel windowsero’, entendera que es una herramienta esencial, y que su potencia va mucho mas lejos de lo que uno piensa cuando se enfrenta por primera vez a ese frio prompt de login blanco, ahi, esperando a quien sabe que….

luego uno va usandola mas segun se ve obligado (¿qué nuevo usuario no prefiere las bonitas ventanas?), le va cogiendo carinio, hasta que al final se hace una herramienta indispensable, y acabas poniendola como fondo de pantalla. Y luego te das cuenta de que con una no es suficiente: necesitas mas, muchas mas.

Vale, estareis pensando, ‘niky, que te has tomado hoy?? en ctrl+alt+Fx tienes otras seis, y puedes abrir todos los konsoles que quieras, que sabes que el sistema no se va a colgar’ No, no me he tomado nada. Por un asunto con la grafica, no puedo acceder a las tty virtuales ( ctrl+alt+Fx ), y lo de tener abiertas yoquesecuantas, no solo es un peñazo (tendria que tener abiertas demasiadas), sino que queda poco elegante.

Y es aqui (ya iba siendo hora, dos parrafos largos de cosas que no vienen a cuento), cuando entra en juego screen.

Screen es, tecnicamente hablando, un “multiplexador (*) de terminales fisicas”. A que suena bastante mal?? vale, lo vuelvo a intentar. Screen es un programa que te permite trabajar con muchas terminales, como si fuera una sola. Es util, pues, tanto para mi, que no puedo acceder a las tty virtuales, como para todos aquellos que necesiten tener muchas terminales abiertas, y no quieran abrir tantos konsoles, o no quieran usar el entorno grafico y las 6 tty’s se les queden cortas.

lo primero es instalarlo: (en debian y derivadas:) aptitude install screen

y despues aprender a manejarlo. Screen tiene muchas, demasiadas opciones. Pero me voy a centrar en lo basico, ya que de lo demas aun no tengo mucha idea (es la primera vez que no recomiendo leer el man, yo no me entere de nada.)

bien: para lanzar una nueva terminal, simplemente escribimos screen en la activa.

un momento…. y mi ‘antigua’ terminal? s’a esfumao…” no, hombre…. sigue ahi, pero escondida…. No te adelantes que eso viene ahora.

Vale, hemos lanzado screen y tenemos otra terminal corriendo. Podemos usarla para lanzar algun proceso muy largo (compilar el kernel, actualizar la distro), para loguearnos como root y no tener que andar cambiando de user a cada minuto, para hacer un ssh y no tener que cerrarlo, etc. Decir que al lanzar screen podemos decirle directamente el proceso que queremos que corra (por ejemplo: screen sudo aptitude dist-upgrade), y tras lanzarnos la nueva terminal, ejecutara el proceso. y decir que si no le dices el proceso, te lanza un mensaje, y screen aparece al darle a enter, aunque aparentemente solo te haya salido el prompt normal de nuevo (quieres comprobar que esta ahi? sigue leyendo….)

ahora, queremos volver a nuestra otra terminal (descubri la utilidad de screen cuando me entere de como hacer esto). la combinacion es ctrl+a+d. Esto no es emacs, asi que podemos teclear la a y la d una detras de otra (manteniendo pulsado ctrl) (aunque la verdad es que no se si en emacs se puede o no, ya que nunca he sabido como leches funciona…)

voila! terminal 1 de nuevo. ahora, queremos volver a la 2. tecleamos: screen -r . Y ahi esta. Tambien se puede hacer volviendo a lanzar el proceso (en mi ejemplo, screen sudo aptitude dist-upgrade), pero corremos el riesgo de que si ha acabado lo volvera a lanzar.

si tenemos mas de una, hay que especificar cual queremos relanzar: en realidad es muy facil, ya que el programa al hacer el screen -r te avisa. lo unico que hay que hacer es screen -r XXXXXXX, donde XXXXXX es la linea (sin la fecha) de la terminal que queremos relanzar (copiar de las que da el programa), o bien solo el PID. (XXXX es el pid en este caso)

y una nota importante: no se puede abrir una screen dentro de otra. supongo que para evitar que el sistema se vuleva loco.

Por ultimo, para salir de una screen y que no se quede por ahi, salimos como de una tty normal (exit)

por cierto: pese a que hay gente que dice que screen traga mucho, si dentro no estas haciendo nada que trague mucho, screen en si no tiene un gasto de recursos alto: tras un simple logueo como root, este es el consumo indicado por htop:
4191 niky 20 0 4104 1192 748 S 0.0 0.1 0:00.04 screen

decir que a screen tambien se lo conoce como GNU Screen. Y que quien quiera mas informacion (ya he dicho que screen tiene muchas opciones), puede leer el man, o visitar la pagina oficial, o mirar en google, o, por que no, preguntar.

__________________

* la palabreja existe, pero la palabra se usa mas sin traducir: multiplexor. No obstante, la mejor traduccion a mi gusto (aunque no sea muy exacta, ya que google coincide con ella :P) es multiplicador.

Actualizacion (29.12.08): os dejo un cheat sheet de screen, bastante completa. LINK