{"id":915,"date":"2009-06-14T16:39:01","date_gmt":"2009-06-14T14:39:01","guid":{"rendered":"http:\/\/www.marblestation.com\/?p=915"},"modified":"2012-04-26T16:15:19","modified_gmt":"2012-04-26T14:15:19","slug":"screen-multiples-consolas-en-una","status":"publish","type":"post","link":"https:\/\/www.marblestation.com\/?p=915","title":{"rendered":"Screen, m\u00faltiples consolas en una"},"content":{"rendered":"<p>Cuando accedemos remotamente por telnet o ssh a un sistema se suele obtener acceso a una \u00fanica shell donde ejecutar comandos. Por ejemplo, si queremos ejecutar simult\u00e1neamente el <a href=\"http:\/\/www.marblestation.com\/?p=246\">lector de correo electr\u00f3nico mutt<\/a> y navegar por directorios para copiar o mover archivos, vamos a tener que realizar 2 conexiones para disponer de 2 shells: En una ejecutar\u00edamos mutt mientras usamos la otra para navegar por los directorios.<\/p>\n<p>Adicionalmente, si perdemos la conexi\u00f3n con el servidor no podremos recuperar el estado en el que se encontraban las terminales. Por ejemplo, si est\u00e1bamos comprimiendo un directorio y se corta la conexi\u00f3n, esta acci\u00f3n se quedar\u00e1 a medias y tendremos que repetirla.<\/p>\n<p>Sin embargo, si hacemos uso de &#8216;<a href=\"http:\/\/es.wikipedia.org\/wiki\/GNU_Screen\">screen<\/a>&#8216; podemos solventar de un plumazo esos dos inconvenientes:<\/p>\n<ul>\n<li>\u00danicamente nos bastar\u00e1 con realizar una conexi\u00f3n dado que este programa nos permite mantener diversas &#8220;ventanas&#8221; virtuales dentro de la misma terminal. El concepto es similar a cuando tenemos un \u00fanico navegador con diferentes pesta\u00f1as.<\/li>\n<li>Si la conexi\u00f3n se pierde, screen continuar\u00e1 funcionando y al volver a reconectar con el servidor podremos recuperar el estado original<\/li>\n<\/ul>\n<p>Lo mejor es experimentar con screen para comprobar su utilidad:<br \/>\n<!--more--><\/p>\n<pre>\r\nsudo apt-get install screen\r\nscreen -R -D\r\n<\/pre>\n<p>El comando anterior restaurar\u00e1 la sesi\u00f3n anterior de screen en caso de existir o, de lo contrario, crear\u00e1 una sesi\u00f3n 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:<\/p>\n<ul>\n<li>ctrl-a c<\/li>\n<p>Crear una nueva ventana con una shell<\/p>\n<li>ctrl-a k<\/li>\n<p>Destruye la ventana actual<\/p>\n<li>ctrl-a n<br \/>\nctrl-a p<\/li>\n<p>Ir a la ventana siguiente o anterior<\/p>\n<li>ctrl-a ctrl-a<\/li>\n<p>Ir a la \u00faltima ventana visualizada<\/p>\n<li>ctrl-a A<\/li>\n<p>Cambiar el t\u00edtulo de la ventana actual<\/p>\n<li>ctrl-a ESC<\/li>\n<p>Ver el historial (scrolling buffer)<\/p>\n<li>ctrl-a S<\/li>\n<p>Divide la pantalla horizontalmente<\/p>\n<li>ctrl-a |<\/li>\n<p>Divide la pantalla verticalmente<\/p>\n<li>ctrl-a tab<\/li>\n<p>Cambia la divisi\u00f3n activa de la pantalla<\/p>\n<li>ctrl-a X<\/li>\n<p>Cierra la divisi\u00f3n activa de la pantalla<\/p>\n<li>ctrl-a a [&#8230;]<\/li>\n<p>Envia el comando [&#8230;] a una sesi\u00f3n de screen que se est\u00e9 ejecutando dentro de screen<\/p>\n<li>ctrl-a x<\/li>\n<p>Bloquea terminal<\/p>\n<li>ctrl-a d<\/li>\n<p>Desasignar screen (recuperar despu\u00e9s con screen -R -D)\n<\/ul>\n<p>Adicionalmente, podemos realizar pantallazos o llevar un registro de todos los comandos que ejecutamos:<\/p>\n<ul>\n<li>ctrl-a h<\/li>\n<p>Guarda pantallazo en &#8220;hardcopy.n&#8221;<\/p>\n<li>ctrl-a H<\/li>\n<p>Inicia\/para registro de la ventana actual en &#8220;screenlog.n&#8221;\n<\/ul>\n<p>O incluso podemos <a href=\"http:\/\/www.marblestation.com\/?p=587\">compartir una terminal entre diversos usuarios de forma remota con screen<\/a>.<\/p>\n<p>Finalmente, si deseamos tener una barra inferior donde aparecer\u00e1 el nombre de las diferentes ventanas, as\u00ed como la carga del sistema y la hora actual (entre otras cosas), podemos modificar el fichero de configuraci\u00f3n ~\/.screenrc:<\/p>\n<pre>\r\nscreen -t shell 0\r\n#screen -t shell 0 motd+shell\r\n#screen -t shell2    1\r\n#screen -t server    2\r\n#screen -t Mail 9   tail -f \/var\/log\/messages\r\n\r\nselect 0\r\nshelltitle \"shell\"\r\n\r\n# skip the startup message\r\nstartup_message off\r\n\r\n# go to home dir\r\nchdir\r\n\r\n# Automatically detach on hangup.\r\nautodetach on\r\n\r\n# Change default scrollback value for new windows\r\ndefscrollback 1000\r\n\r\n# Turns off alternate screen switching in xterms,\r\n# so that text in screen will go into the xterm's scrollback buffer:\r\ntermcapinfo xterm* ti@:te@\r\naltscreen on\r\n\r\n# start with visual bell as default\r\nvbell on\r\nvbell_msg \"bell on %t (%n)\"\r\nactivity \"Activity in %t(%n)\"\r\n\r\n# Run a screensaver if there's nothing happening for a while.\r\n#idle 600 eval \"screen cmatrix -f -o -u 10\" \"idle 0\"\r\nidle 600 lockscreen\r\n\r\n### White\r\n#caption always \"%{kW}%?%-Lw%?%{bw}%n*%f %t%?(%u)%?%{kW}%?%+Lw%? %= %{= Wk}%110`%109`%111` %H load: %l | %D %d-%m-%Y %0c:%s\"\r\n\r\n### Black\r\ncaption always \"%{wk}%?%-Lw%?%{bw}%n*%f %t%?(%u)%?%{wk}%?%+Lw%? %= %{= kw}%110`%109`%111` %H load: %l | %D %d-%m-%Y %0c:%s\"\r\n\r\n# Keep vertical and horizontal splitting layout\r\nlayout save Desktop1\r\nlayout autosave on\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Cuando accedemos remotamente por telnet o ssh a un sistema se suele obtener acceso a una \u00fanica shell donde ejecutar comandos. Por ejemplo, si queremos ejecutar simult\u00e1neamente el lector de correo electr\u00f3nico mutt y navegar por directorios para copiar o mover archivos, vamos a tener que realizar 2 conexiones para disponer de 2 shells: En &hellip; <a href=\"https:\/\/www.marblestation.com\/?p=915\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Screen, m\u00faltiples consolas en una<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,6],"tags":[],"class_list":["post-915","post","type-post","status-publish","format-standard","hentry","category-espanyol","category-tecnologia"],"_links":{"self":[{"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/posts\/915","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=915"}],"version-history":[{"count":14,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/posts\/915\/revisions"}],"predecessor-version":[{"id":1130,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=\/wp\/v2\/posts\/915\/revisions\/1130"}],"wp:attachment":[{"href":"https:\/\/www.marblestation.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=915"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=915"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.marblestation.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=915"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}