Instalar y Usar la Pantalla en un Servidor de Ubuntu Cloud
Introducción
Screen es una aplicación de consola que te permite utilizar múltiples sesiones de terminal dentro de una ventana. El programa funciona dentro de una sesión shell y actúa como un contenedor y administrador para otras sesiones de terminal, similar a cómo un gestor de ventanas gestiona las ventanas.
Hay muchas situaciones en las que la creación de varias ventanas de terminal no es posible o ideal. Es posible que tenga que administrar varias sesiones de consola sin un servidor X en ejecución, es posible que necesite acceder a muchos servidores de Cloud remotos, o puede que tenga que supervisar la salida de un programa en ejecución mientras trabaja en otra tarea. Todas las necesidades se abordan fácilmente con el poder de la pantalla.
Instalación
En este tutorial, usaremos Ubuntu 12.04, pero fuera del proceso de instalación, todo debería ser el mismo en cada distribución moderna.
Use “apt-get” to install on Ubuntu:
sudo apt-get update
sudo apt-get install screen
Uso Básico
Para iniciar una nueva sesión de pantalla, simplemente tecleamos el comando "screen".
screen
Screen version 4.00.03jw4 (FAU) 2-May-06
Copyright (c) 1993-2002 Juergen Weigert, Michael Schroeder
Copyright (c) 1987 Oliver Laumann
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with
this program (see the file COPYING); if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Send bugreports, fixes, enhancements, t-shirts, money, beer & pizza to
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
[Press Space for next page; Return to end.]
Usted será recibido con la página de licencia al iniciar el programa. Sólo tienes que pulsar "Return" o "Enter" para continuar.
Lo que suceda a continuación puede ser sorprendente. Se nos da un mensaje de comandos normal y parece que no ha sucedido nada. ¿No funcionó correctamente la "pantalla"? Intentemos un atajo de teclado rápido para averiguarlo. Mantenga pulsada la tecla de control y, a continuación, pulse la tecla "a", seguida de la tecla "v":
Ctrl-a v
screen 4.00.03jw4 (FAU) 2-May-06
Acabamos de solicitar la información de la versión de la pantalla y hemos recibido algunos comentarios que nos permiten verificar que la pantalla se está ejecutando correctamente.
Ahora es un buen momento para introducir la forma en que estaremos controlando la pantalla. La pantalla se controla principalmente a través de atajos de teclado. Cada atajo de teclado para la pantalla está precedido de "Ctrl-a" (mantenga pulsada la tecla de control mientras pulsa la tecla "a"). Esa secuencia de pulsaciones de teclas indica a la pantalla que necesita prestar atención a las siguientes teclas que presionamos.
Ya has utilizado este paradigma una vez cuando pedimos la información de la versión sobre la pantalla. Vamos a usarlo para obtener más información útil.
Ctrl-a ?
Screen key bindings, page 1 of 2.
Command key: ^A Literal ^A: a
break ^B b license , removebuf =
clear C lockscreen ^X x reset Z
colon : log H screen ^C c
copy ^[ [ login L select '
detach ^D d meta a silence _
digraph ^V monitor M split S
displays * next ^@ ^N sp n suspend ^Z z
dumptermcap . number N time ^T t
fit F only Q title A
flow ^F f other ^A vbell ^G
focus ^I pow_break B version v
hardcopy h pow_detach D width W
help ? prev ^H ^P p ^? windows ^W w
history { } quit \ wrap ^R r
info i readbuf < writebuf >
kill K k redisplay ^L l xoff ^S s
lastmsg ^M m remove X xon ^Q q
[Press Space for next page; Return to end.]
Esta es la pantalla de acceso directo del teclado interna. Probablemente querrá memorizar cómo llegar aquí, porque es una excelente referencia rápida. Como puede ver en la parte inferior, puede presionar "espacio" para obtener más comandos.
Ok, vamos a intentar algo más divertido. Vamos a ejecutar un programa llamado "top" en esta ventana, que nos mostrará alguna información sobre nuestros procesos.
top
top - 16:08:07 up 1:44, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 58 total, 1 running, 57 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 507620k total, 262920k used, 244700k free, 8720k buffers
Swap: 0k total, 0k used, 0k free, 224584k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 3384 1836 1288 S 0.0 0.4 0:00.70 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.11 ksoftirqd/0
5 root 20 0 0 0 0 S 0.0 0.0 0:00.12 kworker/u:0
6 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
7 root RT 0 0 0 0 S 0.0 0.0 0:00.07 watchdog/0
8 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 cpuset
9 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
11 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns
12 root 20 0 0 0 0 S 0.0 0.0 0:00.03 sync_supers
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 bdi-default
14 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd
15 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kblockd
16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 ata_sff
17 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khubd
18 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 md
Bien, ahora estamos monitoreando los procesos en nuestro servidor. Pero ¿qué pasa si necesitamos ejecutar algunos comandos para obtener más información sobre los programas que vemos? No necesitamos salir de "arriba". Podemos crear una nueva ventana para ejecutar estos comandos.
Ctrl-a c
La secuencia "Ctrl-a c" crea una nueva ventana para nosotros. Ahora podemos ejecutar cualquier comando que deseemos sin interrumpir el monitoreo que estábamos haciendo en la otra ventana.
¿A dónde fue esa otra ventana? Podemos volver a ella usando un nuevo comando:
Ctrl-a n
Esta secuencia va a la siguiente ventana que estamos ejecutando. La lista de ventanas envolver, así que cuando no hay ventanas más allá de la actual, nos cambia de nuevo a la primera ventana.
Ctrl-a p
Esta secuencia cambia la ventana actual en la dirección opuesta. Así que si tiene tres ventanas y actualmente está en la tercera, este comando le cambiará a la segunda ventana.
Un atajo útil para usar cuando estás volteando entre las mismas dos ventanas es esto:
Ctrl-a Ctrl-a
Esta secuencia lo mueve a la ventana visitada más recientemente. Así que en el ejemplo anterior, esto lo movería de nuevo a su tercera ventana.
En este punto, usted puede estar preguntándose cómo puede realizar un seguimiento de todas las ventanas que estamos creando. Afortunadamente, la pantalla viene con un número de maneras diferentes de manejar sus diversas sesiones. En primer lugar, crearemos tres nuevas ventanas para un total de cuatro ventanas y luego probaremos una de las herramientas de administración de ventanas más simples, "Ctrl-a w".
Ctrl-a c
Ctrl-a c
Ctrl-a c
Ctrl-a w
0$ bash 1$ bash 2-$ bash 3*$ bash
Obtenemos información útil de este comando: una lista de nuestras ventanas actuales. Aquí tenemos cuatro ventanas. Cada ventana tiene un número y las ventanas están numeradas comenzando en "0". La ventana actual tiene un asterisco al lado del número.
Así que usted puede ver que estamos actualmente en la ventana # 3 (en realidad la cuarta ventana porque la primera ventana es 0). Entonces, ¿cómo llegar a la ventana # 1 rápidamente?
Ctrl-a 1
Podemos usar el número de índice para saltar directamente a la ventana que queremos. Veamos nuestra lista de ventanas de nuevo.
Ctrl-a w
0$ bash 1*$ bash 2$ bash 3-$ bash
Como puede ver, el asterisco nos dice que ahora estamos en la ventana # 1. Intentemos una forma diferente de cambiar las ventanas.
Ctrl-a “
Num Name Flags
0 bash $
1 bash $
2 bash $
3 bash $
Obtenemos un menú de navegación real esta vez. Puede navegar con las flechas arriba y abajo o con "j" y "k" como lo haría en el editor de texto vi. Cambie a una ventana pulsando "Return" o "Enter".
Esto es muy útil, pero ahora mismo todas nuestras ventanas se llaman "bash". Eso no es muy útil. Vamos a nombrar algunas de nuestras sesiones. Cambie a una ventana que desee nombrar y luego use la secuencia "Ctrl-a A".
Ctrl-a 0
Ctrl-a A
Set window's title to: bash
Usando la secuencia "Ctrl-a A", podemos nombrar nuestras sesiones. Ahora puedes retroceder sobre "bash" y luego renombrarlo como quieras. Vamos a ejecutar "top" en la ventana # 0 de nuevo, por lo que vamos a nombrarlo "monitoreo".
Set window's title to: monitoring
Ctrl-a “
Num Name Flags
0 monitoring $
1 bash $
2 bash $
3 bash
Ahora tenemos una etiqueta más útil para la ventana # 0. Así que sabemos cómo crear y nombrar ventanas, pero ¿cómo podemos deshacernos de ellas cuando ya no las necesitamos? Utilizamos la secuencia "Ctrl-a k", que significa "kill".
Ctrl-a k
Really kill this window [y/n]
Gestión de Sesiones de Pantalla
Cuando quiera salir de la pantalla y acabar todas las ventanas, puede utilizar esta secuencia de comandos.
Ctrl-a \
Really quit and kill all your windows [y/n]
Esto destruirá nuestra sesión de pantalla. Perderemos cualquier ventana que hayamos creado y cualquier trabajo inacabado.
Pero queremos explorar uno de los grandes beneficios de usar "pantalla". No queremos destruir la sesión, simplemente queremos separarla. Detaching permite que nuestros programas en la instancia de pantalla continúen ejecutándose, pero nos da acceso de nuevo a nuestra sesión de consola base (aquella en la que empezamos "screen" desde el principio). La sesión de pantalla sigue ahí, solo se administrará en segundo plano.
Ctrl-a d
[detached from 1835.pts-0.Blank]
Así que nuestra sesión está ahora separada. ¿Cómo volvemos a ello?
screen –r
El "r" significa "reattach". Ahora estamos de vuelta en nuestra sesión de pantalla. ¿Qué pasa si tenemos varias sesiones de pantalla sin embargo? ¿Qué pasaría si hubiéramos iniciado una sesión de pantalla y lo hubiéramos separado, y luego comenzado una nueva sesión de pantalla y desprendida también?
screen
Ctrl-a d
screen
Ctrl-a d
¿Cómo le decimos a la pantalla qué sesión adjuntar?
screen –ls
There are screens on:
2171.pts-0.Blank (07/01/2013 05:00:39 PM) (Detached)
1835.pts-0.Blank (07/01/2013 03:50:43 PM) (Detached)
2 Sockets in /var/run/screen/S-justin.
Ahora tenemos una lista de nuestras sesiones. Podemos volver a conectar el segundo tecleando su número de identificación después de la bandera "-r".
screen –r 1835
¿Qué sucede si desea adjuntar una sesión a dos ordenadores separados o ventanas de terminal? Puede utilizar el indicador "-x", que le permite compartir la sesión.
screen –x
Gestión de Terminales Dentro de la Pantalla
Hay una serie de comandos que le ayudan a administrar las sesiones de terminal que ejecuta dentro de la pantalla.
Para copiar texto, puede utilizar esta secuencia:
Ctrl-a [
Esto le dará un cursor que puede mover con las teclas de flecha o las teclas h, j, k, l (como vi). Desplácese hasta donde desee iniciar la copia y pulse "Volver" o "Intro". Mueva hasta el final de donde desea copiar y pulse "Volver" o "Intro" de nuevo. El texto se copia en el portapapeles.
Una cosa a tener en cuenta es que este es también el mecanismo de la pantalla para desplazarse. Si necesita ver algún texto que esté fuera de la pantalla, puede pulsar "Ctrl-a [" y luego desplazarse hacia arriba fuera de la pantalla.
Podemos pegar el texto que copiamos en la derecha.
Ctrl-a ]
Otra cosa que puede que desee hacer es supervisar los programas que se ejecutan en otra ventana de la pantalla.
Digamos que está compilando algo en una ventana y desea saber cuándo se ha completado. Puede pedir a la pantalla que supervise esa ventana para el silencio con la secuencia "Ctrl-a _", que le indicará cuando no se ha generado ninguna salida durante 30 segundos.
Vamos a probarlo con un ejemplo más simple. Vamos a tener la pantalla nos dicen cuando nuestra ventana ha terminado de hacer ping a google 4 veces.
ping –c 4 www.google.com
Ctrl-a _
The window is now being monitored for 30 sec. silence.
Ahora podemos trabajar en otra ventana y ser alertados cuando la tarea en esta ventana esté completa.
Ctrl-a 1
Window 2: silence for 30 seconds
También podemos hacer lo contrario y ser alertados cuando hay actividad en una ventana específica. Logramos esto con la secuencia "Ctrl-a M".
sleep 20 && echo “output”
Ctrl-a M
Window 2 (bash) is now being monitored for all activity.
Ahora seremos alertados cuando el comando produzca salida.
Ctrl-a 1
Activity in window 2
Digamos que vamos a estar haciendo algunos cambios importantes y queremos tener un registro de todos los comandos que ejecutamos. Podemos registrar la sesión con:
Ctrl-a H
Creating logfile "screenlog.1".
Regiones de Pantalla
Si necesitamos ver varias ventanas a la vez, podemos usar algo que la pantalla llama "regiones". Creamos más regiones dividiendo la región actual. Para dividir la región actual horizontalmente, podemos escribir:
Ctrl-a S
Esto moverá nuestra ventana actual a la mitad superior de la pantalla y abrirá una nueva región en blanco debajo de ella. Podemos llegar a la pantalla inferior con la tecla "tab":
Ctrl-a [tab]
A continuación, podemos crear una nueva ventana en la región inferior o cambiar la vista a una ventana diferente de la manera normal.
Si queremos acabar con la región actual, podemos usar esta secuencia:
Ctrl-a X
Eso destruye la región sin destruir la ventana real. Esto significa que si estaba ejecutando un programa en esa región, todavía puede acceder a ella como una ventana normal, la vista en esa ventana fue simplemente destruida.
Si queremos hacer una división vertical, podemos usar esta secuencia en su lugar:
Ctrl-a |
Nota: no es el carácter 1 (número uno) o L. Es el carácter "pipe", que se encuentra en la misma clave que "\" en la mayoría de los teclados.
Los controles de las divisiones verticales son los mismos que los de las divisiones horizontales. Si hemos agregado algunas regiones diferentes y queremos regresar a una sola región, podemos usar esta secuencia, que destruye todas las regiones excepto la actual.
Ctrl-a Q
Usando Byobu
Una gran mejora para la pantalla es un programa llamado "byobu". Actúa como una envoltura para la pantalla y proporciona una experiencia de usuario mejorada. En Ubuntu, puede instalarlo con:
sudo apt-get install byobu
Antes de comenzar, necesitamos decir byobu para usar la pantalla como backend. Podemos hacer esto con el siguiente comando:
byobu-select-backend
Select the byobu backend:
1. tmux
2. screen
Choose 1-2 [1]:
Podemos elegir la pantalla aquí para configurarla como el gestor de terminal predeterminado.
Ahora, en lugar de escribir "pantalla" para iniciar una sesión, puede escribir "byobu".
byobu
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-24-virtual i686)
* Documentation: https://help.ubuntu.com/
Welcome to the light, powerful, text window manager, Byobu.
You can toggle the launch of Byobu at login with:
'byobu-disable' and 'byobu-enable'
For tips, tricks, and more information, see:
* http://bit.ly/byobu-help
justin@Blank:~$
u? 12.04 0:* 118! 3h55m 2.00 2.0GHz 496M6% 2013-07-01 18:19:21
Como puedes ver, ahora tienes la pantalla envuelta en una interfaz agradable. Cuando escribe "Ctrl-a" por primera vez, tendrá que decir byobu para reconocer que como un comando de pantalla y no un comando de Emacs.
Ctrl-a
Configure Byobu's ctrl-a behavior...
When you press ctrl-a in Byobu, do you want it to operate in:
(1) Screen mode (GNU Screen's default escape sequence)
(2) Emacs mode (go to beginning of line)
Note that:
- F12 also operates as an escape in Byobu
- You can press F9 and choose your escape character
- You can run 'byobu-ctrl-a' at any time to change your selection
Select [1 or 2]:
Seleccione "1" para usar byobu como de costumbre. La interfaz le proporciona mucha información útil, como una lista de ventanas e información del sistema. En Ubuntu, incluso te dice cuántos paquetes tienen actualizaciones de seguridad con un número seguido de un signo de exclamación sobre un fondo rojo. Una cosa que es diferente entre el uso de byobu y la pantalla es la forma en que byobu en realidad administra las sesiones. Si simplemente escribe "byobu" de nuevo una vez que esté separado, simplemente volverá a conectar la sesión anterior en lugar de crear una nueva. Para crear una nueva sesión, debe escribir:
byobu –S sessionname
Cambie "nombre de sesión" a lo que desee llamar a su nueva sesión. Puede ver una lista de sesiones actuales con:
byobu –ls
There are screens on:
22961.new (07/01/2013 06:42:52 PM) (Detached)
22281.byobu (07/01/2013 06:37:18 PM) (Detached)
2 Sockets in /var/run/screen/S-root.
Y si hay varias sesiones, al escribir "byobu", se le presentará un menú para elegir la sesión a la que desea conectarse.
byobu
Byobu sessions...
1. screen: 22961.new (07/01/2013 06:42:52 PM) (Detached)
2. screen: 22281.byobu (07/01/2013 06:37:18 PM) (Detached)
3. Create a new Byobu session (screen)
4. Run a shell without Byobu (/bin/bash)
Choose 1-4 [1]:
Puede seleccionar cualquiera de las sesiones actuales, crear una nueva sesión byobu, o incluso obtener una nueva shell sin utilizar byobu.
Una opción que podría ser útil en un servidor de cloud que administre remotamente es tener byobu inicio automáticamente cada vez que inicie sesión en su sesión. Eso significa que si alguna vez se desconecta de su sesión, su trabajo no se perderá, y simplemente puede volver a conectarse para volver a donde estaba antes.
Para habilitar byobu para iniciar automáticamente con cada inicio de sesión, escriba esto en el terminal:
byobu-enable
The Byobu window manager will be launched automatically at each text login.
To disable this behavior later, just run:
byobu-disable
Press to continue...
Si alguna vez desea desactivar esta característica de nuevo, simplemente escriba:
byobu-disable
Y no se iniciará automáticamente.
Fuente. Artículo traducido y con muy ligeras modificaciones de: https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-debian