Mantenga los procesos en ejecución a pesar de una conexión interrumpida
Supongo que todos saben esto: están conectados a su servidor con SSH y en medio de la compilación de algún software (por ejemplo, un nuevo kernel) o haciendo alguna otra tarea que lleva mucho tiempo, y de repente su conexión se cae por alguna razón, y pierdes tu trabajo inacabado. Esto puede ser muy molesto, pero afortunadamente, hay una pequeña utilidad llamada pantalla que te permite volver a conectarte a una sesión anterior para que puedas terminar tu tarea. Este breve tutorial muestra cómo usar screen solo para este propósito.
1 Instalación del comando de pantalla
La instalación de la pantalla es muy fácil. En Debian, ejecute:
apt-get install screen
Para Ubuntu, use el comando con sudo:
sudo apt-get install screen
Y para Fedora, CentOS, SuSE y Mandriva también hay paquetes de pantalla que puede instalar con yum/yast/urpmi/…
Fedora y CentOS
yum install screen
2 Usando el comando de pantalla
Con screen puedes crear una o más sesiones en tu terminal SSH actual. Solo corre
screen
para empezarlo Esto crea una sesión de pantalla o ventana (aunque no la veas como tal) en tu terminal SSH actual:
Presione Espacio o Retorno para acceder al símbolo del sistema:
Parece tu terminal SSH normal, ¿no?
Ahora voy a describir los comandos de pantalla más importantes que necesita para controlar la pantalla. Estos comandos comienzan con CTRL a para distinguirlos de los comandos de shell normales.
- Ctrl ac: crea una nueva sesión de pantalla para que pueda usar más de una sesión de pantalla a la vez.
- Ctrl an – Cambia a la nortesesión de pantalla externa (si usa más de una).
- Ctrl ap – Cambia a la pagssesión de pantalla anterior (si usa más de una).
- Ctrl ad: separa una sesión de pantalla (sin eliminar los procesos en ella, continúan).
Para cerrar una sesión de pantalla donde todas las tareas hayan terminado, puede escribir
exit
Ahora juguemos un poco con eso. En nuestra ventana de pantalla, ejecutamos el comando
top
Esto debería verse así:
Ahora vamos a crear otra sesión de pantalla escribiendo
Ctrl a c
Se abre una nueva sesión de pantalla en blanco, y allí ejecutamos
tail -f /var/log/mail.log
para echar un vistazo continuo a nuestro registro de correo:
Ahora puede navegar por sus dos sesiones de pantalla ejecutando
Ctrl a n
o
Ctrl a p
Para desconectar una sesión de pantalla y volver a su terminal SSH normal, escriba
Ctrl a d
De vuelta en su terminal SSH normal, puede ejecutar
screen -ls
para obtener una lista de sus sesiones de pantalla actuales:
There are screens on: 2477.pts-0.server1 (Detached) 2522.pts-0.server1 (Detached) 2 Sockets in /var/run/screen/S-root.
Para volver a conectarse a una de estas sesiones, ejecute
screen -r 2477.pts-0.server1
donde 2477.pts-0.server1 es el nombre de una de las sesiones de la salida screen -ls.
Para salir y finalizar una sesión de pantalla, finalice todas las tareas actuales en ella (la parte superior se puede finalizar escribiendo q, la cola -f /var/log/mail.log se puede finalizar escribiendo CTRL c) y luego escriba
exit
Luego volverá a otra sesión de pantalla (si usa más de una) o al terminal SSH normal, si no hay más sesiones de pantalla abiertas.
Si desea obtener más información sobre la pantalla, ejecute
man screen
3 Mi conexión se cayó – ¿Qué puedo hacer?
Ahora supongamos que compila un kernel en una sesión de pantalla, algo que normalmente lleva mucho tiempo, y de repente se cae la conexión. Gracias a screen tu trabajo no se pierde. Una vez que su conexión esté respaldada, inicie sesión en su sistema con SSH nuevamente y ejecute
screen -ls
como se muestra en el capítulo 2. De los resultados, elija una sesión (por ejemplo, 2477.pts-0.server1) y vuelva a adjuntarla:
screen -r 2477.pts-0.server1
Si eligió la sesión correcta, debería encontrar que su kernel aún se está compilando (si no ha terminado mientras tanto) para que pueda continuar con su trabajo.