Estoy trabajando en una máquina remota CentOS 5.6 y mi red sigue cayendo. ¿Hay alguna forma de recuperar mis sesiones bloqueadas después de volver a conectarme?
EDITAR: estoy actualizando e instalando algo con yum y me preocupa que esto pueda ser un problema si los procesos continúan suspendidos en el medio de lo que sea que estén haciendo.
linux
session
shell
networking
Jeff Schaller
fuente
fuente
Respuestas:
No hay forma, pero para evitar esto me gusta usar
tmux
. Comienzo tmux, comienzo la operación y sigo mi camino. Si regreso y encuentro que la conexión se ha interrumpido, todo lo que tengo que hacer es volver a conectar y escribirtmux attach
.Aquí hay un ejemplo.
fuente
screen
.Las recomendaciones para tmux y screen son buenas sugerencias. Implican la respuesta a su pregunta, pero en realidad no la declaran. La respuesta a la pregunta es: no hay manera. Si inicia sesión a través de ssh, el shell finaliza cuando se corta la conexión. La solución es iniciar sesión e iniciar inmediatamente un terminal virtual de algún tipo (como
tmux
). Cuando se corta la conexión, el shell en el que se encuentra finaliza, pero puede abrir un nuevo shell y volver a conectarse al terminal virtual (que está ejecutando el shell en el que realmente está haciendo su trabajo).fuente
Como dijo William, la respuesta corta es no, no hay manera. Para evitar esto, puede usar el comando de pantalla antes de perder la conexión
fuente
No, no puede recuperar un shell después de una desconexión. En cambio, lo que puede hacer es asegurarse de que el comando que estaba ejecutando continúa ejecutándose después de la desconexión.
Para lograr esto, use los comandos "nohup" y "disown", que generalmente son comandos integrados en la mayoría de los shells, es decir, no necesita instalar nada. Sin embargo, esto solo funciona para comandos no interactivos.
Entonces, los pasos serían los siguientes:
Cuando regrese al servidor, simplemente "tail nohup.out" para ver cómo está funcionando el comando.
fuente
Alguien agregó reptyr en un comentario en lugar de una respuesta, por lo que no puedo votarlo, pero parece una buena respuesta a la pregunta editada y funcionó muy bien en CentOS.
ver: https://github.com/nelhage/reptyr https://www.ostechnix.com/reptyr-move-running-process-new-terminal/
Lo mismo, perdí la conexión remota a una sesión de actualización de yum. Así que busqué y encontré esta pregunta ... luego volví a conectar y usé la pantalla:
y allí estoy en el aviso recuperado que estaba dando algunas horas antes.
Técnicamente, las respuestas son todas correctas, esto NO es una recuperación de una sesión bloqueada, es la repetición de un proceso huérfano a la sesión actual. Y muy útil también lo es ...
fuente
Como muchas personas han sugerido
screen
ytmux
, ambos admiten la funcionalidad básica, pero tienen características específicas distintas, por lo que no se puede decir que uno es superior a otro en todos los casos. Por ejemplo, solo tmux admite la división de ventanas , mientras que solo la pantalla GNU puede alternar el ajuste de línea larga con (Ctrl + ar). Vea una comparación más detallada aquí .También existen herramientas específicas para solucionar este problema de ssh:
Autossh es un programa para iniciar una copia de ssh y monitorearla, reiniciándola según sea necesario en caso de que falle o deje de pasar el tráfico. La idea es de rstunnel.
Mosh es una aplicación de terminal remota que permite itinerancia, admite conectividad intermitente y proporciona eco local inteligente y edición de línea de las pulsaciones de teclas del usuario. Mosh es un reemplazo para SSH. Es más robusto y receptivo, especialmente a través de Wi-Fi, celulares y enlaces de larga distancia.
fuente
Esto se puede hacer usando
tmux
shell. Si se desconecta, la forma más rápida de volver a conectar una sesión es:fuente
tmux
sesión en ejecución.attach
comoa
".