Ejecutar Procesos Largos Con Screen - 27 Oct 2012

Estas instrucciones están escritas para ser usadas en Mac OS X o Linux, aunque cualquier derivado de Unix debería servir.

Cuando ejecutamos un comando en algún terminal el tiempo de vida está determinado por la sesión que iniciamos. Al momento que la sesión termina porque cerramos el terminal (en caso de una sesión local) o nos desconectamos de un servidor (en caso de una sesión remota), los procesos que hayamos ejecutado se detendrán.

Existe una utilidad conocida como screen que nos permite abrir una especie de “sesión virtual” que tiene tiempo de vida indeterminado. Esta sesión sólo termina si se lo solicitamos de manera explícita.

Para iniciar una “sesión virtual” debemos ejecutar el comando screen indicándole un nombre para la sesión:

screen -S misesionvirtual

Esto nos abrirá una sesión como si acabáramos de abrir un nuevo terminal en la que los comandos que ejecutemos vivirán “por siempre” hasta cerrar la sesión.

Si queremos salirnos del screen sin cerrar la sesión debemos darle a “Ctrl+A D”, esto es, darle a “Ctrl” y la letra “A” a la vez, luego soltar ambas teclas y darle a la tecla “D”.

Si queremos entrar de nuevo a un screen que ya creamos anteriormente debemos saber su nombre. Para saber las sesiones que tenemos creadas podemos ejecutar el comando:

screen -list

Esto nos dará una lista de las sesiones creadas y el estado de cada una. Luego, podemos “re-entrar” a una sesión con el comando:

screen -r misesionvirtual

Hay casos en los que cerramos el terminal o nos desconectamos de internet sin haber salido correctamente de un screen y la sesión queda “abierta”. En estos casos el comando “screen -r nombredesesion” no funcionará, tendremos que usar el comando:

screen -x misesionvirtual

Este comando nos sirve también para compartir una sesión abierta por otro terminal.

Ejemplo 1: Ejecutar un proceso dentro de un screen:

screen -S misesionvirtual
ruby mi_ciclo_infinito.rb

(Ctrl+A D)

Ejemplo 2: Entrar a un screen y finalizar un proceso en ejecución:

screen -r misesionvirtual

(Ctrl+C)

Comments

More Posts...