Necesito ejecutar comandos SSH de forma remota con la salida que se muestra localmente. Pero si la conexión se rompe, quiero que el comando aún se ejecute.
No estoy hablando tanto de iniciar sesión y ejecutar, sino de hacer ssh user @ remotehost 'comandos && command, etc.'
¿Cómo puedo asegurarme de que el comando se ejecuta incluso si se interrumpe la conexión?
fuente
¿Está buscando tener una sesión persistente que pueda reanudar, o simplemente para evitar que una desconexión mate la exención?
En el primer caso, el uso
screen
, para este último,nohup
.fuente
Como se mencionó anteriormente,
screen
puede hacer todo el truco. Pero no solo lo que necesitas. He usado la pantalla durante años y ahora la uso cada vez que inicio sesión en los sistemas. Intenta instalarscreen
y crear~/.screenrc
con dicha configuración:Entonces corre
screen -Rd vcf
. Esa es la invocación preferible de la pantalla. Se volverá a conectar a la sesión creada anteriormente con el nombre vcf * (o se le advertirá si es ambiguo) o, si la sesión aún no se abrió, se creará. CTRL+ Aes una meta clave que hace todo.CTRL+A C
( CTRL+ A, luego C) crea una nueva ventana (pantalla) dentro de la sesión.CTRL+A SPACE
mueve el foco a la siguiente ventana en una ronda.CTRL+A D
desconecte la sesión actual manteniendo todas las ventanas funcionales entre conexiones. Si ha ejecutado una tarea muuuuuuuuuuuuuuuuuuuu como se puede separar de la pantalla y volver a conectarla más tarde para ver qué sucede. Lo mismo sucede si se pierde su sesión ssh: la pantalla permanece viva con todas las ventanas abiertas y todas las tareas iniciadas.Si desea cerrar alguna ventana dentro de la pantalla, solo
exit
desde el shell en ella. Si desea cerrar todos los shells / tareas en todas las ventanas y salir de la pantalla, simplemente presioneCTRL+A CTRL+\
y presione "Y" cuando se le solicite.Para todo lo demás ver la pantalla del hombre.
fuente
He visto esta alternativa a una conexión confiable "me gusta" de ssh:
http://mosh.mit.edu/
fuente
Yo generalmente haría:
fuente