Verwenden Sie den Befehl screen
- 4659
- 1109
- Marleen Weight
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
- « Elgg Social Networking Engine Docker Image -Bereitstellung und -nutzung
- Fatal Das Postfix -Mail -System läuft bereits - Lösung »