Así que estaba corriendo apt-get upgrade
en un servidor cuando el enrutador decidió que había pasado demasiado tiempo desde la última vez que me enojó: se cortó toda conexión. La moraleja de la historia es usar screen
mucho cuando estás en un enrutador bum.
De todos modos, volví a iniciar sesión y encontré en htop que el proceso todavía estaba suspendido allí, todavía esperando que mi Y / n se actualizara (por suerte, aún no lo había alcanzado). ¿Hay alguna forma de volver a conectar una sesión que se había interrumpido? Terminé simplemente matándolo, ya que no estaba en el medio de la administración de paquetes, pero sería genial saberlo para referencia futura.
apt-get
proceso aún se estuviera ejecutando. Debería haber muerto junto con toda la cadena de procesos hasta SSH. Me di cuenta de quedo-dist-upgrade
se inicia automáticamente en unascreen
/byobu
sesión: tal vez en algunas circunstancias, ¿apt-get
hace lo mismo?Respuestas:
La respuesta a su pregunta correcta es: no puede . Creo que el principal problema es que los procedimientos de autenticación no estarán sincronizados. Simplemente no funciona así.
Como te habrás dado cuenta, la solución es usar la pantalla cuando sea posible (por cierto, tmux es una alternativa a la pantalla).
fuente
byobu
es un agradable, más fácil de usar front-end parascreen
(otmux
) - definitivamente vale la pena echarle un vistazo (:Para ejecutar procesos duraderos, uso screen o byobu si quieres una interfaz más amigable.
Para la pantalla, puede usar:
Esto ejecutará [programa] y sus [args] dentro de una sesión de pantalla . Una vez que finaliza el programa, la sesión se cierra automáticamente. Si desea mantener la sesión después de que se ejecute su programa, simplemente ejecute la pantalla sin ningún argumento y aparecerá un nuevo mensaje dentro de la sesión. CTRL + A + D separa el terminal de la sesión actual.
Para volver a adjuntar a una sesión anterior:
Si solo hay una sesión abierta, se volverá a conectar de inmediato. Si hay varias sesiones en curso, le preguntará a cuál desea adjuntar. Si conoce el nombre de la sesión, puede agregarlo como argumento a esta línea de comando.
Byobu es una buena mejora. Se basa en la pantalla , pero proporciona una barra en la parte inferior que muestra todas las sesiones actuales como pestañas y proporciona accesos directos más fáciles para moverse por ellas. Usted puede:
PALABRA DE CONSEJO : evite dejar abierta una sesión con el usuario root . Si alguien obtiene acceso a su terminal (local o remotamente), puede volver a conectarse fácilmente a una sesión en curso y utilizar su sistema como root. Si es necesario, es mejor comenzar una sesión usando un usuario común y sudo líneas de comando individuales según sea necesario.
fuente
Si bien no puede volver a adjuntar a una sesión SSH interrumpida, puede volver a procesar el proceso que se ejecuta dentro de SSH , funcionalmente equivalente a lo que desea.
Instrucciones
En su caso, se haría cargo del
apt-get
proceso para ser controlado desde una nueva sesión SSH,screen
sesión o similar. Mi favorito para esto es elreptyr
comando:Luego, con el pid que encontraste para tu proceso:
O si eso no funciona, intente:
Después de esta etapa, toda su entrada de teclado va al programa que asumió. Lamentablemente, no verá la salida anterior de la sesión SSH, como la
apt-get
salida que le pide confirmación.Explicaciones
Hay varias otras herramientas que básicamente funcionan igual que
reptyr
(es decir, a través deptrace
archivos adjuntos de depuración). Vea las siguientes preguntas y respuestas donde se discuten:En las instrucciones anteriores,
reptyr 10626
usa elptrace
archivo adjunto de depuración mientras que elsudo reptyr -T 10626
comando usa el robo de TTY y es preferible ( detalles ).Finalmente, la razón por la que no puede hacerse cargo de una sesión SSH de esta manera es porque un
sshd
proceso no está controlado por un terminal host, sino que proporciona la parte esclava de un terminal, unpts
dispositivo, mientras que la parte maestra que lo controla reside en el máquina cliente, aquí con una sesión SSH desglosada en el medio. Cuando fuerza la toma de talsshd
proceso conreptyr -s <pid>
, su entrada de teclado va a ese proceso, no a su proceso secundario activo. Entonces un "Ctrl + Z" simplemente matará esosshd
.fuente
Estaba haciendo
do-dist-upgrade
vía ssh desde una computadora portátil que entró en suspensión, por lo tantoBroken pipe
. Al volver a la máquina, veía que los procesos relacionados con la actualización aún se estaban ejecutando, entre los cualeswhiptail
me pedían entradas (qué administrador de pantalla elegir) y, lo que es más relevante, una propiedad de rootSCREEN
. Pude hacersudo su -
yscreen -r
adjuntar a la sesión y, he aquí, tengo el diálogo de cola de látigo frente a mí capaz de tomar entrada. Pude reanudar la actualización sin problemas.Nota: esta fue una actualización de Ubuntu 14.04 a 16.04.
fuente