Während des Server-Upgrades verlorene SSH-Verbindung - Wie stelle ich die Verbindung zum Prozess wieder her?


31

Also habe ich ein Ubuntu Server Upgrade von 11.04 auf 11.10 durchgeführt.

Ich habe es im Hintergrund vergessen und mein SSH-Client hat die Zeit überschritten und die Verbindung getrennt (Putty unter Windows, go figure). Das Letzte an meinem Terminal war die Frage, ob ich eine alte Konfiguration behalten soll.

Als ich mich wieder beim Server anmeldete, wurden Aptitude-Dateien von einem anderen Prozess gesperrt. Ich gehe daher davon aus, dass dieser Upgrade-Prozess auf meine Eingabe wartet.

Wie kann ich mit diesem Prozess interagieren und das Upgrade fortsetzen? Wenn möglich.

Vielen Dank


Antworten:


36

Der Prozess wird tatsächlich in einer Bildschirm- oder Byobu-Sitzung als Root-Benutzer ausgeführt. Verbinden Sie sich erneut mit dem Server mit Putty auf Port 22 oder dem fehlersicheren 1022. sudo su - oder su - in Ihrem Root-Konto und setzen Sie den Bildschirm mit byobu oder einem screen -r fort und setzen Sie ihn dort fort, wo Sie ihn verlassen haben.

oh und ja, ich habe es auf die harte Tour herausgefunden ;-)


1
Woah danke! Ich habe tatsächlich ein Release-Upgrade von 11.10 auf 12.04 in byobu ausgeführt und es dann geschlossen, als byobu aktualisiert wurde, aber ich konnte mich wieder mit der Stammbildschirmsitzung verbinden und das Upgrade beenden! Ich habe fast versucht, das Upgrade gewaltsam zu beenden, aber zum Glück habe ich diese Antwort rechtzeitig gelesen.
Ibrahim

3
Bei einer blockierten Installation hieß es, der Bildschirm sei bereits angeschlossen, sodass ich das Abnehmen des Bildschirms erzwinge, um ihn wieder anzuschließen. Der Befehl lautet screen -D Information from here: kb.iu.edu/data/ahrm.html
David

1
Verwenden screen -r <id>funktioniert auch, und Sie müssen nur ein paar Zeichen der ID eingeben, damit es funktioniert.
Daniel

1
Das funktioniert bei mir nicht, da es besagt, dass screendas nicht installiert ist.
Starbeamrainbowlabs

1
Neuere Ubuntu verwenden sudo screen -D -rnach sudo su -(wenn nicht root).
bshea

34

Das kannst du nicht. Finden Sie den Upgrade-Prozess, indem Sie

lsof /var/lib/dpkg/lock

Töte es, repariere alle unterbrochenen Upgrades mit

dpkg --configure --pending

und starten Sie das Upgrade neu.


3
Ist das sicher, wenn der Prozess ein ist do-release-upgrade?
Stephen Melrose

1
@StephenMelrose Es ist nie sicher. Aber es ist einigermaßen sicher und die einzige verbleibende Option.
Teddy

2
Die beste Antwort zwischen vielen, wie man ein Apt-Get-Upgrade behebt, das durch ein Putty-Session-Timeout abgebrochen wurde ... erfolgreich getestet, danke!
Kojo,

Der and restart the upgradeSchritt funktioniert in meinem Fall nicht (ich habe die SSH-Sitzung vom do-release-upgrade14.04 -> 16.04 verloren). Was ich stattdessen als letzten Schritt tue, um das Release-Upgrade abzuschließen, ist sudo apt autoremoveund dann sudo shutdown -r now.
Ruslan Stelmachenko

Hier wurde eine vollständigere Antwort gefunden, die ich befolgt habe. Das Upgrade wurde automatisch dort fortgesetzt, wo es aufgehört hat. askubuntu.com/questions/219545/…
lacostenycoder

4

Kryopid (gefunden über diese Frage ) könnte helfen, es sei denn, der aktuelle "ein Prozess, kein Baum von Prozessen" ist in diesem Fall ein Problem.

Möglicherweise sind die Dateien gesperrt, weil der Prozess kurzerhand abgebrochen wurde und keine Gelegenheit hatte, nach der eigentlichen Bereinigung aufzuräumen. Vergewissern Sie sich daher, dass Aptitude tatsächlich noch ausgeführt wird. Verwenden Sie es lsof /var/lib/dpkg/lockwie in Teddys Antwort vorgeschlagen, um zu überprüfen - dies gibt Ihnen die PID an, mit der Sie auch Cryopid ausprobieren können.

In Zukunft empfehle ich, wann immer möglich durch den Bildschirm zu laufen. Ich habe es mir zur Gewohnheit gemacht, dass der Bildschirm (oder Byobu, ein Wrapper um den Bildschirm, der einige nützliche Verhaltensweisen definiert) als erstes ausgeführt wird, wenn ich SSH zu irgendwo hin verwende. Dann kann ich die Verbindung wiederherstellen, wenn es Probleme gibt. Sie können es so einstellen, dass es automatisch gestartet oder neu verbunden wird, obwohl ich das nie irgendwo gemacht habe - es gibt eine Reihe von Beispielen online ( dieses zum Beispiel ), wenn Sie das ausprobieren möchten.


1
Im Übrigen habe ich dies verhindert und ein Do-Release-Upgrade über ssh mit byobu durchgeführt, aber als byobu aktualisiert wurde, hat es meine Sitzung beendet! Ich frage mich, ob die direkte Verwendung des Bildschirms dies verhindert hätte. Aber die andere Antwort auf diese Frage hat meine Situation beantwortet und scheint, dass der Installer schlau ist und trotzdem eine eigene Bildschirmsitzung ausführt: D
Ibrahim
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.