Uso de screen para dejar procesos en ejecución en un terminal

Si estás usando una conexión SSH para ejecutar un comando que tarda mucho en terminar puede usar nohup para prevenir que ese proceso se cancele cuando sales de la sesión SSH:

$ nohup command > /dev/null 2>&1 &

Pero este método desconecta stdio, stdout and stderr del proceso (a no ser que los redirijas a otro sitio, como se ha hecho en el ejemplo anterior con /dev/null). Si quieres poder reconectarte al proceso más tarde screen es la herramienta adecuada.

Primero instala screen:

$ sudo apt-get install screen

Luego ejecuta una shell de bash mediante screen:

$ screen bash

Si te sale un error similar a este:

Cannot open your terminal '/dev/pts/1' - please check

Tal y como se explica aquí se puede deber a que otro usuario arrancó la shell original (con sudo su o sudo -u username bash -l por ejemplo). Tan solo ejecuta este comando:

$ script /dev/null

Si todo va bien una nueva shell se abrirá y ahí podrás ejecutar lo que quieras. Supongamos que quieres recodificar a otro codec un video muy largo. Una vez comience el proceso de recodificado debes pulsar CTRL+A y luego D para desconectarte de esa shell. Ahora estarás de nuevo en la shell original pero el proceso que has lanzado todavía se estará ejecutando.

$ screen bash
[detached from 769.ttys001.macbook]

Si solo tienes una proceso de screen en ejecución puedes reconectarte a él ejecutando lo siguiente:

$ screen -r

Si tienes varios procesos de screen al mismo tiempo tienes que especificar el nombre al cual te quieres conectar. Usando este comando se aparecerá una lista de todos ellos:

$ screen -list
There is a screen on:
	769.ttys001.macbook	(Detached)
1 Socket in /tmp/screens/S-username.

Así podras conectarte a ellos mediante su nombre:

$ screen -r 769.ttys001.macbook

SI quieres finalizar alguno de los procesos de screen debes conectarte a él y luego pulsar CTRL+D.

screen

Se pueden configurar algunas opciones de screen en ~/.screenrc. En este ejemplo se desactiva el mensaje de bienvenida se hace que se muestre siempre un texto en la parte inferior con la hora, la fecha y la cantidad total de terminales abiertos.

startup_message off
hardstatus alwayslastline '%{= wk}%?%-Lw%?%{r}(%{k}%n*%f%t%?(%u)%?%{r})%{k}%?%+Lw%?%?%= %d-%m-%Y %c'
activity ''

Source: http://raspi.tv/2012/using-screen-with-raspberry-pi-to-avoid-leaving-ssh-sessions-open
http://www.systerminal.com/2014/07/12/raspberry-pi-como-servidor-de-descargas-rtorrent-screen/

You might also like

Solucionar ERROR 2006 (HY000) at line ###: MySQL server has gone away
Una vez tuve un proyecto con una tabla en MySQL que tenía más de 2 millones de filas. La primera vez...

Arreglar tipografías de Netbeans después de instalar Wine
Como no iba a usar Wine mucho y me fastidió mucho que me estropeara las tipografías decidí desinstalarlo...

Usar el php de MacPorts desde la línea de comandos
Hace un tiempo instalé Apache+MySQL usando MacPorts en Mac OS X. Todo iba bien siempre y cuando estuviera...

Instalar una aplicación Symfony2 usando Composer
Antes de instalar un proyecto Symfony2 tienes que cumplir los requisitos mínimos en tu servidor. Yo...

Dejar un comentario?

0 Comentarios.

Deje un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.