Dlaczego powinieneś używać Tmux przy niestabilnych połączeniach SSH
Czy kiedykolwiek zdarzyło Ci się uruchamiać długie zadanie na zdalnym serwerze, tylko po to, by utracić połączenie SSH w połowie? Mnie zdarzyło się to kilka razy. W tym wpisie podzielę się tym, jak Tmux uratował moją pracę, gdy połączenie SSH ciągle się zrywało i dlaczego powinieneś go używać dla
Problem
Kilka dni temu pobierałem dużą kopię zapasową bazy danych z zdalnego serwera. To był duży plik i pobieranie miało zająć kilka godzin.
Podczas gdy to działało, nasza sieć zaczęła mieć problemy. Moje połączenie SSH ciągle się rozłączało. Sieć była niestabilna.
Normalnie, jeśli połączenie zostanie przerwane, pobieranie również się zatrzymuje. To oznacza, że musiałbym zaczynać od nowa.
Ale tym razem wszystko było w porządku. Pobieranie trwało dalej.
Dlaczego?
Ponieważ uruchamiałem zadanie tworzenia kopii zapasowej wewnątrz sesji tmux!
Czym jest Tmux?
Tmux to multiplekser terminala, który pozwala uruchamiać wiele sesji terminala w jednym oknie. Umożliwia zarządzanie i przełączanie się między różnymi zadaniami, utrzymywanie procesów w tle, a nawet ponowne łączenie się z sesjami w przypadku utraty połączenia.
Tmux jest szczególnie przydatny do pracy zdalnej przez SSH, ponieważ utrzymuje działanie twoich poleceń nawet wtedy, gdy połączenie jest niestabilne. Możesz opuścić sesję i wrócić później. Twoja praca nadal tam jest.
Jak Tmux pomógł mi podczas niestabilnych połączeń SSH
Zanim rozpocząłem pobieranie, otworzyłem nową sesję tmux za pomocą następującego polecenia:
tmux new -s backup_taskNastępnie rozpocząłem pobieranie w tej sesji tmux, używając polecenia takiego jak:
wget https://example.com/big-database.sql.gzPóźniej, gdy moje połączenie SSH zostało przerwane, zalogowałem się ponownie i uruchomiłem:
tmux attach -t backup_taskI tak po prostu wróciłem tam, gdzie skończyłem. Pobieranie wciąż trwało. Nie straciłem żadnego postępu.
Zaimplementowałem również proste obejście, aby automatycznie uruchamiać sesję tmux na zdalnym systemie podczas logowania się przez SSH. Było to pomocne w wielu przypadkach, gdy zapomniałem początkowo uruchomić sesję tmux.
Jeśli jesteś zainteresowany, sprawdź poniższy link, aby dowiedzieć się, jak to zrobiłem:
- Jak automatycznie uruchomić sesję Tmux na zdalnym systemie podczas logowania się przez SSH w Linuksie
Dlaczego polecam Tmux
Jeśli pracujesz na zdalnych serwerach lub często korzystasz z SSH, tmux jest bardzo przydatnym narzędziem. Pomaga na wiele sposobów:
- Utrzymuje działanie Twojej pracy, nawet jeśli połączenie zostanie przerwane,
- Pozwala ci odejść i wrócić później,
- Pozwala podzielić ekran na części,
- Ułatwia przewijanie, kopiowanie i wklejanie.
Następnym razem, gdy będziesz miał zamiar uruchomić coś ważnego zdalnie, nie zapomnij uruchomić tmux new -s my_session przed naciśnięciem Enter. Twoje przyszłe ja podziękuje ci, gdy Wi-Fi cię zawiedzie.
Osobiście używam tmux, ale możesz również użyć screen, innego dobrego multiplikatora terminala. Zarówno tmux, jak i screen są niezawodnymi narzędziami do zarządzania sesjami terminala.
Kiedy Tmux nie może pomóc
Tmux to ratunek dla poleceń uruchamianych na zdalnym serwerze (takich jak instalowanie oprogramowania lub pobieranie plików na serwer).
Ale jeśli twoje zadanie zależy od lokalnego połączenia SSH, na przykład pobrania pliku z serwera na laptopa, to Tmux ci nie pomoże.
Na przykład, jeśli spróbujesz pobrać plik z zdalnego serwera na swój lokalny komputer (np. scp server:file.txt .), transfer nie powiedzie się, gdy połączenie SSH zostanie przerwane. Ponieważ Twój lokalny komputer jest odbiorcą.
Tmux pomoże tylko w następującym scenariuszu.
Na przykład, załóżmy, że uzyskujesz dostęp do swojego zdalnego serwera poprzez SSH. Otwierasz sesję tmux i zaczynasz pobierać plik z Internetu na swój zdalny serwer (np. wget lub curl na serwerze).
Po pewnym czasie połączenie SSH lokalnego komputera z zdalnym serwerem zostaje zerwane. Co się teraz dzieje?
Pobieranie kontynuuje się bez przerwy na zdalnym serwerze, ponieważ Tmux je utrzymuje. Kiedy połączysz się ponownie przez SSH, możesz ponownie dołączyć do sesji Tmux i sprawdzić postęp pobierania.
Pobieranie zależy od połączenia internetowego zdalnego serwera, a nie od lokalnego połączenia SSH.
Tmux działa jak „tarcza” dla terminala zdalnego serwera. Nie obchodzi go, jeśli twoje lokalne połączenie SSH zostanie przerwane.
Kluczowa informacja:
Tmux nie zapisze transferów, które zależą od Twojego lokalnego połączenia SSH, ale może chronić operacje po stronie zdalnej (takie jak pobieranie pliku na serwer). Do pobierania na lokalny komputer używaj narzędzi takich jak rsync --partial lub najpierw pobierz plik na serwer.
- Wznów Częściowo Przesłane Pliki Przez SSH Używając Rsync
Mam nadzieję, że to pomoże ci zrozumieć, co tmux może, a czego nie może zrobić. W kolejnych sekcjach wyjaśnię ci, jak rozpocząć pracę z tmux.
Jak zacząć korzystać z Tmux
Zainstaluj Tmux
Tmux jest dostępny w domyślnych repozytoriach większości dystrybucji Linuksa.
Na Debianie, Ubuntu i ich pochodnych, możesz zainstalować tmux używając polecenia:
sudo apt install tmuxNa Fedorze, RHEL:
sudo dnf install tmuxPodstawowe użycie Tmux
Rozpocznij nową sesję:
tmux new -s mysessionTo rozpocznie nową sesję o nazwie "mysession". W jej obrębie możesz uruchamiać swoje polecenia.
Następnie odłącz się od sesji, naciskając Ctrl + b, a następnie d. Nie martw się, polecenia nadal będą działać wewnątrz sesji tmux.
Możesz ponownie podłączyć później, używając polecenia:
tmux attach -t mysessionDziękujemy, deweloperom Tmux
Chcę podziękować wszystkim, którzy pracują nad tmux i innymi podobnymi narzędziami. Te projekty nie cieszą się dużą uwagą, ale odgrywają bardzo ważną rolę w administracji systemami.
Jeśli często korzystasz z terminala, zdecydowanie polecam wypróbowanie tmux lub screen. Oba są łatwe do nauki i mogą pomóc chronić Twoją pracę, gdy coś pójdzie nie tak.
Zalecana lektura:
- Ulepszanie logowania SSH za pomocą menu wyboru sesji Tmux w Linuksie
- Jak automatycznie uruchomić sesję Screen w systemie Linux podczas logowania
- Reptyr - Przenieś działający proces z jednego terminala do drugiego bez jego zamykania