Mantener las sesiones SSH en ejecución después de la desconexión

A veces tengo procesos de larga duración que quiero iniciar antes de irme a casa, así que creo una sesión SSH en el servidor para iniciar el proceso, pero luego quiero cerrar mi portátil e irme a casa y más tarde, después de cenar, quiero comprobar el proceso que inicié antes de salir del trabajo. ¿Cómo puedo hacer eso con SSH? Tengo entendido que si rompes tu conexión SSH también romperás tu sesión de inicio de sesión en el servidor, por lo tanto matando el proceso que se está ejecutando desde hace tiempo.

Solución

Utilice nohup para que su proceso ignore la señal de colgado:

$ nohup long-running-process &
$ exit
Comentarios (15)

Quieres usar GNU Screen. Es increíble.

ssh me@myserver.com
screen               #start a screen session
run-a-long-process

CTRL+a , d para salir de tu sesión de pantalla

exit                 #disconnect from the server, while run-a-long-process continues

Cuando vuelvas a tu portátil

ssh me@myserver.com
screen -r            #resume the screen session

A continuación, comprueba el progreso de tu largo proceso.

screen es una herramienta muy completa, y puede hacer mucho más de lo que he descrito. Mientras estés en una sesión de pantalla, prueba ctrl+a,... para aprender algunos comandos comunes. Probablemente los más comunes son:

  • CTRL+a , c para crear una nueva ventana
  • CTRL+a , n para pasar a la siguiente ventana de la sesión de pantalla
  • CTRL+a , p para cambiar a la ventana anterior en tu sesión de pantalla
  • si te conectas desde un montón de sistemas diferentes, puede que accidentalmente te hayas quedado conectado a una sesión de pantalla activa en un ordenador diferente. por esa razón, yo siempre reanudo con screen -d -r para asegurarme de que si otro intérprete de comandos está conectado a mi sesión de pantalla, se desconectará antes de que la reanude en mi sistema actual.
Comentarios (6)

Lo que debes usar es screen o, mejor aún, una envoltura de fácil uso alrededor de screen llamada byobu.

Screen te permite ejecutar múltiples sesiones de terminal virtual en la misma sesión ssh. Un tutorial y páginas de ayuda están disponibles.

byobu es un wrapper que permite abrir fácilmente nuevas pantallas con una simple tecla de función en lugar de la combinación de teclas de ctrl-a. También muestra una línea de estado con todos los terminales virtuales abiertos a los que se les puede asignar un nombre.

Otra buena característica es el hecho de que todas tus pantallas pueden permanecer abiertas mientras tu conexión ssh está desconectada. Sólo tienes que conectar de nuevo a través de ssh y llamar byobu y todo es como antes.

Por fin algunas capturas de pantalla de byobu.

Comentarios (1)