Robię trochę pracy na zdalnym komputerze CentOS 5.6, a moja sieć wciąż spada. Czy istnieje sposób na odzyskanie zawieszonych sesji po ponownym połączeniu?
EDYCJA: robię trochę aktualizacji i instalacji z yum i martwię się, że może to być problem, jeśli procesy będą się zawieszać w środku tego, co robią.
linux
session
shell
networking
Jeff Schaller
źródło
źródło
Odpowiedzi:
Nie ma mowy, ale aby temu zapobiec, lubię używać
tmux
. Zaczynam tmux, zaczynam operację i idę swoją drogą. Jeśli wrócę i stwierdzę, że połączenie zostało zerwane, wszystko, co muszę zrobić, to połączyć się ponownie i wpisaćtmux attach
.Oto przykład.
źródło
screen
.Zalecenia dotyczące tmux i screena są dobrymi sugestiami. Podają odpowiedź na twoje pytanie, ale tak naprawdę nie określaj tego. Odpowiedź na pytanie brzmi: nie ma mowy. Jeśli zalogujesz się przez ssh, powłoka zostanie zakończona, gdy połączenie zostanie zerwane. Obejściem problemu jest zalogowanie się i natychmiastowe uruchomienie wirtualnego terminala (np.
tmux
). Po zerwaniu połączenia zakończona jest powłoka, w której się znajdujesz, ale możesz otworzyć nową powłokę i ponownie połączyć się z terminalem wirtualnym (czyli z powłoką, w której faktycznie wykonujesz swoją pracę).źródło
Jak powiedział William, krótka odpowiedź brzmi: nie, nie ma mowy. Aby temu zapobiec, możesz użyć polecenia screen przed utratą połączenia
źródło
Nie, nie można odzyskać powłoki po rozłączeniu. Zamiast tego możesz upewnić się, że uruchomione polecenie nadal działa po rozłączeniu.
Aby to osiągnąć, użyj poleceń „nohup” i „disown”, które są zwykle wbudowanymi poleceniami większości powłok, tzn. Nie musisz niczego instalować. Działa to jednak tylko w przypadku poleceń nieinteraktywnych.
Kroki byłyby zatem następujące:
Gdy wrócisz na serwer, po prostu „tail nohup.out”, aby zobaczyć, jak działa polecenie.
źródło
Ktoś dodał w odpowiedzi komentarz, a nie odpowiedź, więc nie mogę go głosować, ale wydaje się to dobrą odpowiedzią na edytowane pytanie i działał świetnie na CentOS.
patrz: https://github.com/nelhage/reptyr https://www.ostechnix.com/reptyr-move-running-process-new-terminal/
Tak samo, straciłem zdalne połączenie z sesją aktualizacji mniam. Więc szukałem i znalazłem to pytanie ... potem ponownie połączyłem się i użyłem ekranu tym razem:
i oto jestem na odzyskanej zachęcie, którą wygłosiłeś kilka godzin wcześniej.
Z technicznego punktu widzenia wszystkie odpowiedzi są poprawne, NIE jest to odzyskiwanie zawieszonej sesji, oznacza ona przywrócenie osieroconego procesu do bieżącej sesji. I bardzo użyteczne, to też ...
źródło
Jak wiele osób sugerowało
screen
, atmux
oni obsługują podstawowe funkcje, ale mają różne cechy szczególne, więc nie można powiedzieć, że jeden jest lepszy od drugiego w każdym przypadku. Na przykład tylko tmux obsługuje dzielenie okien , podczas gdy tylko ekran GNU może przełączać zawijanie długich linii za pomocą (Ctrl + ar). Zobacz bardziej szczegółowe porównanie tutaj .Istnieją również narzędzia do rozwiązania tego problemu z ssh:
Autossh to program, który uruchamia kopię ssh i monitoruje ją, uruchamiając ją ponownie, jeśli to konieczne, w przypadku śmierci lub zatrzymania ruchu. Pomysł pochodzi z rstunnel.
Mosh to zdalna aplikacja terminalowa, która umożliwia roaming, obsługuje przerywane połączenia oraz zapewnia inteligentne lokalne echo i edycję linii klawiszy użytkownika. Mosh zastępuje SSH. Jest bardziej niezawodny i responsywny, szczególnie w przypadku połączeń Wi-Fi, komórkowych i dalekobieżnych.
źródło
Można to zrobić za pomocą
tmux
powłoki. Jeśli zostaniesz rozłączony, najszybszym sposobem ponownego przyłączenia sesji jest:źródło
tmux
uruchomioną sesję.attach
jakoa
”.