Jak użyć polecenia ekranu, aby uniknąć nieoczekiwanego zakończenia sesji SSH

Jak użyć polecenia ekranu, aby uniknąć nieoczekiwanego zakończenia sesji SSH

Problem odłączenia SSH

Twoja sesja terminalowa może zostać zamknięta z powodu różnych problemów sieciowych, gdy jesteś
Uruchomienie procesu na zdalnej maszynie, np.:

# Napisz nieudany: zepsuta rura 

W wyniku tego odłączenia sieci sesja SSH Shell będzie również nieumyślnie zabija wszelkie procesy dziecięce działane pod Twoim ssh sesja na zdalnym komputerze.

Uruchamianie nieprzerwanego rozwiązania sesji SSH

Użyj ekran polecenie zapisania sesji. Podczas gdy sesja SSH zostanie odłączona, polecenie ekranu utrzyma proces zdalny. Rozważ następujący przykład SSH, w którym próbujemy SSH od lokalnego gospodarza 10.1.1.2 do pilota 10.1.1.15 gospodarz.

Polecenie ekranu SSH

Zacznijmy od wymienienia naszych aktualnie otwartych sesji ekranu:

Lokalny> $ Screen -List Brak gniazd znalezionych w/var/run/ekran/s -lubos. 

Z góry ekran Wyjście polecenia widzimy, że obecnie nie mamy otwartych sesji. Stwórzmy nowy ekran Sesja, podczas gdy my w tym samym czasie ssh do zdalnego gospodarza. Otwórz nowy terminal i wprowadź:

Lokalny> $ ekran ssh [email protected] 

Wymień ponownie nasze sesje ekranu:

lokalny> $ ekran -list jest ekran: 5646.PTS-0.TheBeast (13/05/15 16:49:30) (przymocowane) 1 gniazdo w/var/run/ekran/s-lubos. 

Powyższe ekran Wyjście pokazuje, że mamy jedną sesję dołączoną do PID ID 5646. W tej chwili możemy rozpocząć proces na zdalnym hoście, ponieważ na przykład możemy wykonać prosty ping:

pilot> # ping 8.8.4.4 ping 8.8.4.48.8.4.4) 56 (84) bajty danych. 64 bajtów od 8.8.4.4: ICMP_REQ = 1 TTL = 57 Czas = 18.2 ms 64 bajtów od 8.8.4.4: ICMP_REQ = 2 TTL = 57 Czas = 17.2 ms 64 bajtów od 8.8.4.4: ICMP_REQ = 3 TTL = 57 Czas = 18.0 ms 

Na tym etapie możemy symulować odłączenie sieci do zdalnego hosta poprzez ręczne odłączenie kabla sieciowego:

Lokalny> $ ping 10.1.1.15 ping 10.1.1.15 (10.1.1.15) 56 (84) bajty danych. Od 10.1.1.2 ICMP_SEQ = 9 Host docelowy nieosiągalny od 10.1.1.2 ICMP_SEQ = 10 Host docelowy nieosiągalny od 10.1.1.2 ICMP_SEQ = 11 Host docelowy nieosiągalny ^C --- 10.1.1.15 Statystyka ping --- 13 przesłane pakiety, 0 Otrzymane, +3 błędy, 100% utrata pakietu, czas 12088ms rura 3 

W tym momencie straciliśmy połączenie i nasz ssh Sesja zamarznie. Możemy teraz zamknąć okno zacisku z rozłączonym ssh sesja i wymień nasze ekrany:

lokalny> $ ekran -list jest ekran: 5646.PTS-0.TheBeast (13/05/15 16:49:30) (odłączone) 1 gniazdo w/var/run/ekran/s-lubos. 

Jak widzimy, nasza sesja ekranu jest teraz odłączona. Następnie odtwarzamy połączenie sieciowe ze zdalnym hostem:

Lokalny> $ ping 10.1.1.15 ping 10.1.1.15 (10.1.1.15) 56 (84) bajty danych. 64 bajtów od 10.1.1.15: ICMP_SEQ = 1 TTL = 64 Czas = 0.951 MS 64 bajtów od 10.1.1.15: ICMP_SEQ = 2 ttl = 64 czas = 0.563 MS ^C --- 10.1.1.15 Statystyka ping --- 2 przesłane pakiety, 2 otrzymane, 0% utrata pakietu, czas 1001ms rtt min/avg/max/mDev = 0.563/0.757/0.951/0.194 MS 

W tym momencie możemy ponownie ponownie ponownie zarejestrować naszą wcześniej otwartą zdalną sesję SSH:

Lokalny> $ ekran -d -r 64 bajty od 8.8.4.4: icmp_req = 203 ttl = 57 czas = 18.2 ms 64 bajtów od 8.8.4.4: ICMP_REQ = 204 TTL = 57 Czas = 18.1 ms 64 bajtów od 8.8.4.4: ICMP_REQ = 205 TTL = 57 Czas = 18.1 ms 64 bajtów od 8.8.4.4: icmp_req = 206 ttl = 57 czas = 18.4 ms 64 bajtów od 8.8.4.4: ICMP_REQ = 207 TTL = 57 Czas = 18.1 ms ^c --- 8.8.4.4 Statystyka ping --- 207 Przesyłane pakiety, 207 otrzymanych, 0% utrata pakietów, czas 206310ms RTT min/avg/max/mDev = 17.231/18.369/23.795/0.571 ms 

Powyższe wyjście z 0% utratą pakietu jest dowodem, że nawet my odłączeni od zdalnej sesji według awarii sieci ekran Dowództwo utrzymywało odległość przy życiu bez przerwy.

Powiązane samouczki Linux:

  • Jak propagować sygnał do procesów dziecka z bash…
  • Jak zabić proces po imieniu
  • Zarządzanie listami procesowymi i automatyczne rozwiązanie procesu
  • Jak zabić proces na podstawie numeru portu w Linux
  • Wprowadzenie do nazwanych rur na powładzie Bash
  • Jak używać polecenia Killall w Linux
  • GNU/Linux Ogólne Przewodnik po rozwiązywaniu problemów dla początkujących
  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Jak uruchomić procesy zewnętrzne z Pythonem i…
  • Podstawowe polecenia Linux