Utracono połączenie SSH podczas aktualizacji serwera - jak ponownie połączyć się z procesem?

32

Przeprowadziłem więc aktualizację serwera Ubuntu Server z 11.04 do 11.10.

Zapomniałam o nim w tle, a mój klient SSH timed out i odłączony (putty na Windows, przejdź rysunek). Ostatnią rzeczą na moim terminalu było pytanie o zachowanie starej konfiguracji itp.

Kiedy ponownie zalogowałem się na serwerze, pliki aptitude zostały zablokowane przez inny proces, więc zakładam, że ten proces aktualizacji czeka na moje dane wejściowe.

Jak mogę współpracować z tym procesem i kontynuować aktualizację? Jeśli to możliwe.

Dzięki

Stephen Melrose
źródło

Odpowiedzi:

36

Proces faktycznie działa w sesji ekranowej lub byobu jako użytkownik root. ponownie połącz się z serwerem za pomocą putta na porcie 22 lub w przypadku awarii 1022. sudo su - lub su - do konta root i wznów ekran z byobu lub screen -r i wznów od miejsca, w którym opuściłeś.

och i tak, dowiedziałem się na własnej skórze ;-)

użytkownik120896
źródło
1
Woah dzięki! Właśnie uruchomiłem aktualizację wersji z 11.10 do 12.04 w byobu, a następnie została zamknięta, gdy byobu została zaktualizowana, ale mogłem ponownie połączyć się z sesją ekranu głównego i obserwować zakończenie aktualizacji! Prawie próbowałem na siłę zabić aktualizację, ale na szczęście przeczytałem tę odpowiedź na czas.
Ibrahim,
3
W przypadku zablokowanej instalacji napisano, że ekran jest już podłączony, więc zmuszam ekran do odłączenia, mogę ponownie podłączyć. Polecenie to screen -D Informacja stąd: kb.iu.edu/data/ahrm.html
David
1
Używanie screen -r <id>również działa i wystarczy, aby wpisać tylko kilka znaków identyfikatora.
Daniel
1
To nie działa dla mnie, ponieważ mówi, że screennie jest zainstalowany.
starbeamrainbowlabs
1
Nowsze wersje Ubuntu używają sudo screen -D -rpo sudo su -(jeśli nie root).
bshea
34

Nie możesz Znajdź proces aktualizacji, wykonując

lsof /var/lib/dpkg/lock

Zabij go, napraw wszelkie przerwane aktualizacje za pomocą

dpkg --configure --pending

i uruchom ponownie aktualizację.

Miś
źródło
3
Czy jest to bezpieczne, jeśli proces jest bezpieczny do-release-upgrade?
Stephen Melrose
1
@StephenMelrose To nigdy nie jest bezpieczne. Jest to jednak dość bezpieczne i jedyna pozostała opcja.
Teddy
2
najlepsza odpowiedź spośród wielu na temat tego, jak naprawić aktualizację apt-get przerwaną przez limit czasu sesji kitu ... pomyślnie przetestowany, dziękuję!
Kojo
and restart the upgradeKrok nie działa w moim przypadku (I utracone podczas sesji ssh do-release-upgrade14.04 -> 16.04). To, co robię zamiast tego jako ostatni krok, aby ukończyć aktualizację wersji, to sudo apt autoremovei wtedy sudo shutdown -r now.
Ruslan Stelmachenko
Znalazłem tutaj bardziej kompletną odpowiedź, którą śledziłem, aktualizacja automatycznie kontynuowana tam, gdzie została przerwana. askubuntu.com/questions/219545/…
lacostenycoder
4

kriopid (znaleziony w tym pytaniu ) może pomóc, chyba że bieżący „jeden proces, a nie drzewo procesów” jest problemem w tym przypadku.

Pliki mogą być zablokowane, ponieważ proces został bezceremonialnie zabity i nie miał szansy wyczyścić się po sobie, więc potwierdź, że aptitude nadal działa. Użyj, lsof /var/lib/dpkg/lockjak sugerowano w odpowiedzi Teddy'ego, aby sprawdzić - to powie ci pid, aby wypróbować również kriopid.

W przyszłości polecam, jeśli to możliwe, przeglądać ekran. Przyzwyczaiłem się do screena (lub byobu, który jest zawijaniem ekranu, który definiuje niektóre użyteczne zachowania) i jest pierwszą rzeczą, którą uruchamiam, gdy SSHing do dowolnego miejsca, a następnie mogę połączyć się ponownie, jeśli występują problemy. Możesz ustawić automatyczne uruchamianie lub ponowne podłączanie, chociaż nigdzie nie miałem okazji tego robić - istnieje wiele przykładów online ( na przykład ten jeden ), jeśli chcesz tego spróbować.

David Spillett
źródło
1
Nawiasem mówiąc, uprzedziłem to i zrobiłem aktualizację do-release w stosunku do ssh, używając byobu, ale kiedy byobu zostało zaktualizowane, to zabiło moją sesję! Zastanawiam się, czy bezpośrednie użycie ekranu mogłoby temu zapobiec. Ale inna odpowiedź na to pytanie odpowiedziała na moją sytuację, wygląda na to, że instalator jest inteligentny i i tak prowadzi własną sesję ekranową: D
Ibrahim