domingo, 1 de mayo de 2011

Entendiendo el comando screen

El comando screen nos ofrece la oportunidad de tener varios procesos (comandos, scripts, etc.) separados desde una misma sesión en terminal. Cuando la sesión es separada el proceso iniciado originalmente por screen es administrado por éste de forma transparente. Luego, más adelante, podemos retomar dichas sesiones nuevamente y veremos que el proceso que iniciamos en dicha terminal está justo como lo dejamos.

Manos a la obra...

Convencionalmente en una terminal escribimos el nombre del comando y presionamos Enter. Inmediatamente, si el comando existe (en nuestro sistema) bash lo llama y lo ejecuta directamente en el terminal donde estamos y, a menos que lo pasemos a segundo plano (& al final del comando) no podremos hacer otra cosa hasta que terminemos con dicho comando.
El comando screen nos proporciona, por decirlo así, un terminal adicional para dicho comando que ejecutaremos. Una forma en que lo probaremos será dándole al comando screen como argumento un comando: screen [comando].

fraterneo@rainbow:~$ screen man lsusb

Lo que vemos aquí aparentemente sucedió como lo hacemos normalmente: man lsusb. Pero ahora separaremos este comando presionando la combinación Ctrl+a+d:

fraterneo@rainbow:~$ screen man lsusb
[detached from 8900.pts-0.rainbow]

Bash ahora nos informa que fuemos separados de 8900.pts-0.rainbow, que es el screen que está ejecutando el comando man lsusb.

Para regresar nuevamente al screen 8900.pts-0.rainbow lo haremos con la opción -r:

fraterneo@rainbow:~$ screen -r 8900.pts-0.rainbow

Podemos separarnos nuevamente de 8900.pts-0.rainbow (Ctrl+a+d) y regresar al terminal y ejecutar otro comando en un screen diferente:

fraterneo@rainbow:~$ screen watch -n1 ping -c3 localhost

Nos separamos de este screen también pulsando Ctrl+a+d, y visualizamos los screen activos con la opción -ls:

fraterneo@rainbow:~$ screen -ls
There are screens on:
9492.pts-0.rainbow (05/01/2011 04:29:32 PM) (Detached)
8900.pts-0.rainbow (05/01/2011 04:20:24 PM) (Detached)
2 Sockets in /var/run/screen/S-fraterneo.

Como podemos observar tenemos activos dos screen de manera simultánea (multitarea). A los cuales podemos regresar con la opción -r. Esta es lo ventaja que nos ofrece el comando screen.

No hay comentarios:

Publicar un comentario