Wie kann ich den Status von "apt-get upgrade" überprüfen, nachdem ich die SSH-Verbindung verloren habe?

16

Normalerweise aktualisiere ich meine Ubuntu-Installation über eine SSH-Verbindung. Manchmal ging diese SSH-Verbindung verloren oder ich schloss versehentlich das Terminalfenster.

Ist es möglich, den Upgrade-Status nach einem erneuten SSH-Login auf dem Computer zu überprüfen?

Josema
quelle

Antworten:

32

Die folgenden Protokolle beziehen sich auf apt-Upgrades:

/var/log/apt/history.log
/var/log/apt/term.log
/var/log/dpkg.log

Wenn der Befehl war dist-upgrade, gibt es zusätzliche Protokolle in:

/var/log/dist-upgrade

Zu Ihrer Information, es ist normalerweise sicher, das Upgrade erneut auszuführen, und apt wird dort fortgesetzt, wo es aufgehört hat, als der Prozess aufgrund einer Unterbrechung abgestürzt ist. Jedoch...

Ein GNU Screen Primer:

Wenn Sie auf einen Remote-Server zugreifen und im Vordergrund einen lang andauernden Prozess starten, empfiehlt es sich, GNU Screen zu verwenden. Screen bietet ein virtuelles Terminal, das auch dann weiterläuft, wenn Ihre SSH-Verbindung unterbrochen wird.

Bildschirm installieren:

sudo apt-get install screen

Bildschirm ausführen:

screen

Nach dem Ausführen von screen erhalten Sie wie bei einem normalen Terminal eine Eingabeaufforderung. Sie können das Upgrade dann über den Innenbildschirm ausführen:

sudo apt-get upgrade

Um zu verstehen, wie dies funktioniert, "trennen" Sie den Bildschirm, indem Sie Strg + a, d drücken . Dadurch kehren Sie zum Nicht-Bildschirm-Terminal zurück. Sie können die Liste der laufenden Bildschirme mit sehen

screen -list

Wenn nur ein Bildschirm ausgeführt wird, können Sie ihn mit folgendem Befehl erneut anfügen:

screen -raAd

(Dadurch wird der Bildschirm getrennt, falls er an einer anderen Stelle angebracht ist, und er wird wieder an das Terminal angeschlossen, das Sie gerade ausführen.)

Normalerweise können Sie ohne zusätzliche Einstellungen keinen normalen Bildlauf auf dem Bildschirm durchführen. Um innerhalb des Bildschirms zu scrollen, drücken Sie Strg-Esc , um den Cursormodus aufzurufen. Sie können dann mit j und k nach oben und unten scrollen . Drücken Sie Esc erneut Cursor - Modus zu verlassen.

Im Internet stehen viele weitere Ressourcen für zusätzliche Bildschirmfunktionen zur Verfügung. Es ist ein unschätzbares Standardwerkzeug für die Systemadministration.

Siehe auch:

Doppelbel
quelle
2
+1 für die tatsächliche Beantwortung der Frage und Erwähnung Bildschirm :)
Nanne
2
Außerdem screen -x- eine Verbindung zum laufenden Bildschirm herstellen, ohne andere zu trennen, sodass die Bildschirmsitzung "Multiplayer" wird.
SF.
Dies ist hilfreich, schließt aber zusätzlich zur Antwort auch die Prävention ein. Darüber hinaus wird das richtige Protokoll angegeben, das angezeigt werden muss. Ein Anfänger ist jedoch möglicherweise nicht mit der tail -fBefehls- und Flag-Option vertraut, mit der er den Fortschritt in Echtzeit verfolgen (oder feststellen kann, dass er abgestürzt ist), wenn "neu gestartet" wird. Anmeldung." Ich weiß, dass es alt und akzeptiert ist, aber ich denke, der Befehlssatz sollte um einen Schwanz erweitert werden, da die Antwort von @TheAnonymousBear in Ermangelung dieses Details direkter und auf den Punkt ist. @doublerebel
oemb1905
10

Neben der Antwort von Doublerebel habe ich heute eine Alternative bemerkt.

Ich bin letzte Nacht ins Bett gegangen, nachdem ich ein Upgrade über SSH gestartet hatte. Ich vergaß dummerweise, es zu starten screenund verlor meine SSH-Sitzung über Nacht.

Ich wollte gerade recherchieren, rettyals mir auffiel, dass rooteine screenSitzung begonnen hatte.

me@GAMMA:~$ ps aux | grep -E 'release|upgrade|apt'
root      6208  0.0  0.0  29140  1628 ?        Ss   01:57   0:05 SCREEN -e \0\0 -L -c screenrc -S ubuntu-release-upgrade-screen-window /tmp/ubuntu-release-upgrader-1h6_g4/raring --mode=server --frontend=DistUpgradeViewText
root      6209  0.2  5.6 287428 93144 pts/2    Ss+  01:57   3:13 /usr/bin/python /tmp/ubuntu-release-upgrader-1h6_g4/raring --mode=server --frontend=DistUpgradeViewText
root      6239  0.0  0.0  50052  1184 ?        Ss   01:58   0:00 /usr/sbin/sshd -o PidFile=/var/run/release-upgrader-sshd.pid -p 1022
root      7306  0.0  4.6 287432 77284 pts/2    S+   02:43   0:08 /usr/bin/python /tmp/ubuntu-release-upgrader-1h6_g4/raring --mode=server --frontend=DistUpgradeViewText
me       26829  0.0  0.0   9440   956 pts/5    S+   22:18   0:00 grep --color=auto -E release|upgrade|apt

Also habe ich die rootBildschirme aufgelistet und an sie angehängt:

me@GAMMA:~$ sudo screen -list
There is a screen on:
        6208.ubuntu-release-upgrade-screen-window       (12/11/2013 01:57:58 AM)        (Detached)
1 Socket in /var/run/screen/S-root.
me@GAMMA:~$ sudo screen -x -r

Und Bam! Ich war wieder im Spiel.

Huckle
quelle
Ich dachte, Sie haben vergessen, den Bildschirm zu starten. Wie lief der Bildschirm, wenn Sie "vergessen haben, auf dem Bildschirm zu starten"?
6.
1
@ oemb1905 Da Ubuntu eins für Sie startet, unter der Annahme, dass Sie es vergessen werden :)
Huckle
Interessant, ist das mit dem do-release-upgradefür Ubuntu spezifischen Befehl? Ich musste noch nie nach Debian suchen, das ich ausschließlich verwende, weil ich es immer manuell ausführe, trenne und dann zurückkehre. Und natürlich verwenden wir stattdessen sudo apt dist-upgradenach dem Wechsel /etc/apt/sources.list.
7.
Ich fand es, ja, das ist Ubuntu-spezifisch, so dass alle reinen Debian-Leute wie ich, die von AskUbuntu gefixt wurden, nicht davon ausgehen sollten, dass dies auf ihren Systemen passieren wird. Originalthread zu diesem Thema: serverfault.com/questions/387547/…
oemb1905
Woher weiß es, dass Sie den Bildschirm installiert haben?
Nacht - Reinstate Monica
4

aptVerwenden Sie zum Anzeigen der Echtzeitausgabe des Hintergrundjobs Folgendes:

sudo tail -f /var/log/apt/term.log
TheAnonymousBear
quelle
Dies ist die richtige Antwort. In der obigen Antwort wird lediglich der Speicherort einiger hilfreicher Protokolle angegeben. Anschließend wird auf Prävention umgeschaltet. Diese Antwort zeigt dem Benutzer, wo er suchen und wie er sie ( tail) nach einem sogenannten "erneuten Anmelden" betrachten muss.
6.
0

Hatte genau das gleiche Problem, verlor meine Verbindung und der Dpkg-Prozess wartete auf Eingabe.

Vielleicht versuchen Sie es beim nächsten Mal: sudo dpkg --configure -a

Sebastian Faujour
quelle
1
Wenn ich das versuche, bekomme ich nur"dpkg: error: dpkg frontend is locked by another process"
CivMeierFan
Ich habe einen Kontext-Grep durchgeführt, um zu sehen, dass es sich glücklicherweise um einen Unterprozess handelte, der ein auf Eingabe wartendes Meldungsdialogfeld generierte, sodass ich dies einfach beenden konnte, ohne den gesamten Apt-Upgrade-Prozess zu beenden.
CivMeierFan
Dieser Ansatz ignoriert die Untersuchung, ob der dpkg-Prozess beim erneuten Anmelden noch auf dem System ausgeführt wird. Wenn es läuft, kann dies im schlimmsten Fall potenziell schädlich sein oder bestenfalls eine schlechte Übung sein, da dpkg eine Sperre hat, /var/dpkg/lockwenn es noch läuft. Und egal, es beantwortet nicht die Frage, wie "der Upgrade-Status überprüft werden soll" und funktioniert stattdessen nur, wenn das Upgrade abgestürzt ist (und nur dann, wenn die Sperre nicht aktiv ist). Ich würde diesen Ansatz niemandem empfehlen. Mit freundlichen
Grüßen