Verwenden Sie den Befehl screen

Verwenden Sie den Befehl screen

SSH -Trennungsproblem

Ihre Terminalsitzung kann aufgrund verschiedener Netzwerkprobleme geschlossen werden, während Sie sind
Ausführen eines Vorgangs auf einer Remote -Maschine z.:

# Schreiben fehlgeschlagen: kaputte Rohr 

Als Ergebnis dieses Netzwerks wird Ihre SSH -Shell -Sitzung auch versehentlich alle unter Ihrem ausgeführten Kinderprozesse abgebildet ssh Sitzung auf dem Remote -Computer.

Ausführen einer ununterbrochenen SSH -Sitzungslösung

Verwenden Sie das Bildschirm Befehl zum Speichern der Sitzung. Während Ihre SSH -Sitzung getrennt wird, wird der Bildschirmbefehl Ihren Remote -Prozess ausgeführt. Betrachten Sie ein folgendes SSH -Beispiel 10.1.1.2 zu entfernten 10.1.1.15 Gastgeber.

Bildschirmbefehl SSH Beispiel

Beginnen wir mit der Auflistung unserer aktuell geöffneten Bildschirmsitzungen:

Lokal> $ screen -List Keine Sockel gefunden in/var/run/screen/s -lubos. 

Von Oben Bildschirm Befehlsausgabe Wir können sehen, dass wir derzeit keine Sitzungen eröffnet haben. Lassen Sie uns eine neue erstellen Bildschirm Sitzung während wir gleichzeitig ssh zu einem abgelegenen Host. Neues Terminal öffnen und eingeben:

LOCAL> $ screen ssh [email protected] 

Listen Sie unsere Bildschirmsitzungen erneut auf:

Lokal> $ Bildschirm -List Es gibt einen Bildschirm auf: 5646.PTS-0.thebeast (13/05/15 16:49:30) (angehängt) 1 Socket in/var/run/screen/s-lubos. 

Obenstehendes Bildschirm Die Ausgabe zeigt, dass eine Sitzung mit PID -ID angehängt ist 5646. Zu diesem Zeitpunkt können wir einen Prozess auf einem Remote -Host starten, da wir für ein Beispiel einen einfachen Ping ausführen können:

Remote> # Ping 8.8.4.4 Ping 8.8.4.4 (8.8.4.4) 56 (84) Datenbytes von Daten. 64 Bytes von 8.8.4.4: icmp_req = 1 ttl = 57 time = 18.2 ms 64 Bytes von 8.8.4.4: icmp_req = 2 ttl = 57 time = 17.2 ms 64 Bytes von 8.8.4.4: icmp_req = 3 ttl = 57 time = 18.0 ms 

Zu diesem Zeitpunkt können wir eine Netzwerkunterbrechung mit einem Remote -Host simulieren, indem wir das Netzwerkkabel manuell herausziehen:

Lokal> $ Ping 10.1.1.15 Ping 10.1.1.15 (10.1.1.15) 56 (84) Daten Bytes. Ab 10.1.1.2 ICMP_SEQ = 9 Zielhost von 10 nicht erreichbar.1.1.2 ICMP_SEQ = 10 Zielhost von 10 nicht erreichbar.1.1.2 ICMP_SEQ = 11 Zielhost nicht erreichbar ^c --- 10.1.1.15 Ping-Statistiken --- 13 Pakete übertragen, 0 empfangen, +3 Fehler, 100% Paketverlust, Zeit 12088ms Pipe 3 

Zu diesem Zeitpunkt haben wir die Verbindung verloren und unsere ssh Die Sitzung wird einfrieren. Wir können jetzt das Terminalfenster mit getrennten Schließen schließen ssh Sitzung und Auflistung unserer Bildschirme:

Lokal> $ Bildschirm -List Es gibt einen Bildschirm auf: 5646.PTS-0.thebeast (13/05/15 16:49:30) (losgelöst) 1 Socket in/var/run/screen/s-lubos. 

Wie wir sehen können, ist unsere Bildschirmsitzung jetzt abgelöst. Als nächstes erstellen wir eine Netzwerkverbindung zu einem Remote -Host:

Lokal> $ Ping 10.1.1.15 Ping 10.1.1.15 (10.1.1.15) 56 (84) Daten Bytes. 64 Bytes von 10.1.1.15: ICMP_SEQ = 1 TTL = 64 Time = 0.951 ms 64 Bytes von 10.1.1.15: ICMP_SEQ = 2 TTL = 64 Time = 0.563 ms ^c --- 10.1.1.15 Ping-Statistiken --- 2 übertragene Pakete, 2 empfangen, 0% Paketverlust, Zeit 1001 ms RTT min/avg/max/mdev = 0.563/0.757/0.951/0.194 ms 

Zu diesem Zeitpunkt können wir uns noch einmal in unsere zuvor geöffnete Remote SSH -Sitzung wieder aufnehmen:

Lokal> $ Bildschirm -d -r 64 Bytes ab 8.8.4.4: ICMP_REQ = 203 TTL = 57 Zeit = 18.2 ms 64 Bytes von 8.8.4.4: ICMP_REQ = 204 TTL = 57 Zeit = 18.1 ms 64 Bytes von 8.8.4.4: ICMP_REQ = 205 TTL = 57 Zeit = 18.1 ms 64 Bytes von 8.8.4.4: ICMP_REQ = 206 TTL = 57 Zeit = 18.4 ms 64 Bytes von 8.8.4.4: ICMP_REQ = 207 TTL = 57 Zeit = 18.1 ms ^c --- 8.8.4.4 Ping-Statistiken --- 207 Pakete übertragen, 207 erhalten, 0% Paketverlust, Zeit 206310ms RTT min/avg/max/mdev = 17.231/18.369/23.795/0.571 ms 

Die obige Ausgabe mit 0% Paketverlust ist ein Beweis dafür, dass sogar wir von einer Remote -Sitzung durch einen Netzwerkfehler getrennt haben Bildschirm Der Befehl hielt den Fernbedienungsprozess ohne Unterbrechung am Leben.

Verwandte Linux -Tutorials:

  • Wie man ein Signal an Kinderprozesse aus einer Bash verbreitet…
  • Wie man den Prozess mit Namen tötet
  • Prozesslistenverwaltung und automatische Prozessabschluss
  • So töten Sie den Prozess basierend auf der Portnummer unter Linux
  • Einführung in genannte Pipes auf Bash Shell
  • So verwenden Sie den Befehl Killall unter Linux
  • GNU/Linux Allgemeiner Fehlerbehebungsleitfaden für Anfänger
  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • So starten Sie externe Prozesse mit Python und dem…
  • Grundlegende Linux -Befehle