Jak sprawdzić status „apt-get upgrade” po utracie połączenia ssh?

16

Zwykle aktualizuję moją instalację Ubuntu poprzez połączenie ssh. Czasami połączenie ssh zostało zerwane lub przypadkowo zamknąłem okno terminala.

Czy można sprawdzić status aktualizacji po ponownym zalogowaniu ssh do komputera?

Josema
źródło

Odpowiedzi:

34

Następujące dzienniki są powiązane z aktualizacjami apt:

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

Jeśli polecenie było dist-upgrade, istnieją dodatkowe dzienniki:

/var/log/dist-upgrade

Do Twojej wiadomości, zwykle jest po prostu ponownie uruchomić aktualizację i apt będzie kontynuować od miejsca, w którym zostało przerwane, gdy proces zmarł z powodu rozłączenia. Jednak...

Podkład ekranu GNU:

Podczas ssh'owania na zdalnym serwerze i rozpoczynania długotrwałego procesu na pierwszym planie, najlepszą praktyką jest używanie GNU Screen. Screen zapewnia wirtualny terminal, który kontynuuje działanie nawet w przypadku utraty połączenia ssh.

Zainstaluj ekran:

sudo apt-get install screen

Uruchom ekran:

screen

Po uruchomieniu ekranu pojawi się wiersz polecenia, tak jak w przypadku normalnego terminala. Następnie możesz uruchomić aktualizację z poziomu ekranu wewnętrznego:

sudo apt-get upgrade

Aby zrozumieć, jak to działa, ekran „odłącz”, naciskając Ctrl + a, d . Spowoduje to powrót do terminala nieekranowego. Możesz zobaczyć listę uruchomionych ekranów za pomocą

screen -list

Jeśli masz tylko jeden ekran, możesz go ponownie podłączyć za pomocą:

screen -raAd

(Odłącza ekran w przypadku, gdy jest podłączony gdzie indziej, i ponownie podłącza go do terminalu, na którym obecnie pracujesz).

Zazwyczaj nie można przewijać „normalnie” z poziomu ekranu bez dodatkowej konfiguracji. Aby przewijać w obrębie ekranu, naciśnij Ctrl-Esc, aby przejść do trybu kursora. Następnie możesz przewijać w dół i w górę za pomocą j i k . Naciśnij klawisz Esc ponownie, aby wyjść z trybu kursora.

W sieci dostępnych jest wiele innych zasobów na dodatkowe funkcje ekranu. Jest to nieocenione standardowe narzędzie do administrowania systemem.

Zobacz też:

doublerebel
źródło
2
+1 voor faktycznie odpowiada na pytanie ORAZ wspominając o ekranie :)
Nanne
3
Ponadto, screen -x- dołącz do uruchomionego ekranu bez odłączania innych, czyniąc sesję ekranową „multiplayer”.
SF.
Jest to pomocne, ale oprócz odpowiedzi obejmuje również zapobieganie. Co więcej, cytowany jest prawidłowy dziennik, ale początkujący użytkownik może nie znać opcji tail -fpolecenia i oznaczenia , co pozwoli użytkownikowi obserwować postęp w czasie rzeczywistym (lub zobaczyć, że się zawiesił) po „ponownym uruchomieniu” Zaloguj sie." Wiem, że jest stary i zaakceptowany, ale myślę, że do tego zestawu instrukcji należy dodać ogon, ponieważ bez tego szczegółu odpowiedź poniżej @TheAnonymousBear jest bardziej bezpośrednia i konkretna. @doublerebel
oemb1905
Często sudo dpkg --configure -akontynuuje apt apt, kiedy to jeszcze wydawało.
niebezpieczne89
10

Oprócz odpowiedzi doublerebel zauważyłem dziś alternatywę.

Poszłam spać po rozpoczęciu aktualizacji SSH. Głupio zapomniałem go uruchomić screeni z dnia na dzień straciłem sesję SSH.

Właśnie miałem rozpocząć badania, rettygdy zauważyłem, że rootrozpoczęła się screensesja.

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

Więc wymieniłem rootekrany i dołączyłem do niego:

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

I Bam! Wróciłem do gry.

Biodro
źródło
Myślałem, że zapomniałeś uruchomić ekran. Jak działał ekran, jeśli „zapomniałeś uruchomić ekran?”
oemb1905
1
@ oemb1905 Ponieważ Ubuntu uruchamia jeden dla ciebie, zakładając, że zapomnisz :)
Huckle
ciekawe, czy to do-release-upgradepolecenie jest specyficzne dla Ubuntu? Nigdy nie musiałem sprawdzać Debiana, którego używam wyłącznie, ponieważ zawsze uruchamiam go ręcznie, odłączam, a potem wracam. I, oczywiście, używamy sudo apt dist-upgradepo zmianie /etc/apt/sources.list.
oemb1905
Znalazłem to, tak, jest to specyficzne dla Ubuntu, więc każdy czysty Debian, taki jak ja, który naprawia kłusaki z AskUbuntu, nie powinien zakładać, że tak się stanie w ich systemach. Oryginalny wątek na ten temat: serverfault.com/questions/387547/…
oemb1905
Skąd wie, że będziesz mieć zainstalowany ekran?
Nacht - Przywróć Monikę
4

Aby wyświetlić dane wyjściowe z aptzadania w tle w czasie rzeczywistym , użyj:

sudo tail -f /var/log/apt/term.log
TheAnonymousBear
źródło
To jest poprawna odpowiedź - powyższa odpowiedź tylko podaje lokalizację niektórych pomocnych dzienników, a następnie przełącza się na zapobieganie. Ta odpowiedź pokazuje użytkownikowi, gdzie szukać i jak na to spojrzeć ( tail) po tym, co nazwali „ponownym logowaniem”.
oemb1905
0

Miałem dokładnie ten sam problem, straciłem połączenie i proces dpkg czekał na dane wejściowe.

Może następnym razem spróbuj: sudo dpkg --configure -a

Sebastian Faujour
źródło
1
Kiedy próbuję tego, dostaję tylko:"dpkg: error: dpkg frontend is locked by another process"
CivMeierFan,
Zrobiłem grep kontekstowy, aby zobaczyć, że na szczęście był to podproces, który wygenerował okno dialogowe komunikatu czekającego na dane wejściowe, więc mogłem go po prostu zabić, nie zabijając całego procesu aktualizacji apt.
CivMeierFan
To podejście ignoruje badanie, czy proces dpkg nadal działa w systemie po ponownym uruchomieniu. Co więcej, jeśli jest uruchomiony, może to być potencjalnie szkodliwe w najgorszym przypadku lub po prostu w najlepszym przypadku złe, ponieważ dpkg zablokuje go, /var/dpkg/lockjeśli nadal działa. I niezależnie od tego, nie odpowiada na pytanie „jak sprawdzić status aktualizacji”, a zamiast tego będzie działać tylko wtedy, gdy aktualizacja ulegnie awarii (i tylko wtedy, gdy blokada nie będzie aktywna). Nie poleciłbym nikomu takiego podejścia. Z szacunkiem, oemb1905
oemb1905