miércoles, 17 de agosto de 2016

Cómo crear una terminal virtual en Linux con screen

Hoy quiero traeros un articulo orientado a la famosa consola de Linux que tanto nos gusta a muchos, y que otros tantos temen. El trabajar con las terminales de Linux es muy rápido y eficiente una vez se han adquirido ciertas nociones básicas, haciendo que la mayoría de las veces se quieran hacer tareas por consola en vez de desde interfaces gráficas (en caso de tenerlas). La cuestión está en que más de una vez tenemos el problema de que queremos tener una serie de tareas en segundo plano a las que poder acceder con comodidad cuando queramos. Esto a veces se puede lograr jugando con ejecuciones de procesos en background, pero eso a veces no nos vale, pues estas ejecuciones en muchas ocasiones son muy restrictivas... Tenemos un proceso en segundo plano sí; pero simplemente podemos hacer que dicho proceso se visualice en la pantalla; cosa que no está nada mal, pero que no es siempre lo que buscamos. A veces necesitamos algo más flexible y que se encuentre dentro de nuestra propia terminal y de ahí nace la necesidad de usar el comando screen; es decir del uso de terminales virtuales.

Screen_portada

Una terminal virtual, no es nada menos una subterminal que se ejecuta de forma independiente a la terminal "real" de forma virtualizada. Es importante no confundir este tipo de virtualización con la virtualización propiamente dicha, pues aquí simplemente se "virtualiza" la terminal; dejando intactos el resto de elementos del sistema. Esto hace que se puedan ejecutar ciertas tareas en segundo plano que queramos retomar más tarde.

Esta terminal virtual está instalada por defecto en algunos sistemas operativos, pero no en todos, o mejor dicho, no en todas las versiones de éstos, así que lo más recomendable es asegurarse de que efectivamente está instalado; cosa que se puede comprobar facilmente al estar incluido en los repositorios oficiales de la mayoría de los sistemas operativos.

apt-get install screen

Su uso es tan sencillo como escribir el comando, sin necesidad de recurrir a parámetro alguno.

screen

Esta terminal tendrá el mismo comportamiento que una terminal normal y en un principio no notaremos diferencia alguna ente una terminal "original" y una virtual; podemos ejecutar tareas a nuestro antojo sin temor a que haya diferencia alguna entre esta terminal y la normal si bien lo suyo es intentar aprovechar el potencial que ofrece screen. Imaginemos que ejecutamos una tarea interactiva que puede llevar bastante tiempo y que queremos ejecutar en segundo plano; algo como por ejemplo una actualización pesada del sistema, en la cual suelen haber cambios significativos y suelen haber actualizaciones que piden confirmación por parte del usuario, ya sea para saber si se está seguro de que se quiere actualizar un paquete en concreto o para mantener alguna configuración.

Se puede hacer que la terminal virtual pase a segundo plano para después volver a llamarlo... Para ello lo primero que habría que hacer sería presionar las teclas ctrl, a y d.  Podemos tener diferentes terminales en segundo plano; es decir, ejecutar el comando screen y poner la terminal en segundo plano en repetidas ocasiones... Es por eso que en caso de tener varias terminales en segundo plano, lo mejor es listarlas mediante el siguiente comando:

screen -ls

ls_screen

Si observáis bien, veréis que cada terminal está diferenciada por un número; en este caso serían los números 18254 y 18168. Si quisiéramos volver a tener el control de una de esas terminales, tendríamos que escribir el comando screen -r, seguido del número de terminal. Por ejemplo:

screen -r 18254

Si tuviésemos una única terminal en segundo plano, no sería necesario hacer referencia al número de ésta, pues no habría ninguna otra que elegir.

Obviamente también podemos darles fin a las terminales que hemos creado. Esto se puede hacer de dos formas: La primera sería usando la combinación de teclas ctrl, a y k. La segunda opción sería recurrir al mismo comando que usaríamos para salir de una terminal común; es decir:

exit

Como podéis ver, el uso del comando screen es realmente sencillo, únicamente requiere tener controladas las terminales que dejemos en segundo plano para dominar diferentes procesos y terminales simultáneos, otorgándonos un gran control sobre el sistema y ayudándonos a evitar usar diferentes consolas (ya sean ttys o sesiones ssh remotas) simultáneas.

Espero que os haya resultado útil.

Saludos.