Ich verwende Mac 10.9.5 mit Bash-Shell. Gelegentlich, wenn ich in eine andere Maschine ssh und dann die Verbindung abbricht (z. B. wenn das Internet ausfällt oder ich an einen neuen Ort ziehe), wird das Terminalfenster mit der offenen SSH-Sitzung eingefroren und die einzige Möglichkeit, wie ich scheinbar weitermachen kann, ist um es zu schließen und eine neue Sitzung zu starten.
Gibt es eine Möglichkeit, die Dinge so zu konfigurieren, dass ich, wenn die Verbindung der SSH-Sitzung unterbrochen wird, zu meiner normalen Bash-Shell zurückkehre, wie vor der Ausführung meines ssh
Befehls?
Sie können ssh
den aufgehängten Prozess anhalten und dann beenden. Dazu müssen Sie die Escape-Sequenz ausgeben, den ssh
Prozess unterbrechen und kill -9
diesen Prozess dann mit beenden.
Die Standard-Escape-Taste für das mit OS X gelieferte ssh- ~
Zeichen. Sie müssen es sofort nach einer neuen Zeile eingeben, damit ssh es respektiert. Und dann wird die Tastenfolge Control- zverwendet, um eine Aufgabe in Bash anzuhalten und in den Hintergrund zu bringen.
Versuchen Sie also diese Tastenfolge:
Return
~
Control-z
Wenn es funktioniert, sehen Sie so etwas wie:
myhost.local:~ |ruby-2.2.0|
> ssh someremotehost
Last login: Fri Mar 6 14:15:28 2015 from myhost
someremotehost:~ |ruby-2.2.0|
> ~^Z [suspend ssh]
[1] + 48895 suspended ssh myremotehost
Diese Ausgabezeile:
[1] + 48895 suspended ssh myremotehost
teilen Ihnen die Prozess-ID des ssh
Prozesses auf Ihrem Computer mit. Es ist 48895
in diesem Beispiel. Dieser Prozess läuft noch, er wurde nur ausgesetzt und in den Hintergrund gestellt. Du musst es töten.
Das kannst du mit dem kill
Befehl machen. Sie möchten es mit Vorurteilen töten, also verwenden Sie die -9
Option, wenn Sie kill
so anrufen:
myhost.local:~ |ruby-2.2.0|
> kill -9 48895
[1] + 48895 killed ssh someremotehost
Verwenden Sie einfach die PID Ihres ssh
Prozesses, wenn Sie diesen Befehl anstelle der 48895
oben verwendeten PID aufrufen.
Und Sie haben Ihre Eingabeaufforderung zurück.
Alternativ können Sie ein zweites Terminalfenster öffnen und ps
mit den ssh
Prozess in der Prozessliste finden und den kill -9
Aufruf gegen die PID absetzen. Allerdings vereitelt das irgendwie den Prozess, Ihre Eingabeaufforderung wieder in das ursprüngliche Terminalfenster zu bringen, nicht wahr?
Scott Dudley
phatmann
Scott Dudley
ServerAliveCountMax 4
undServerAliveInterval 15
, wenn der SSH-Client nach 4*15=60 Sekunden keine Antwort vom Server erhält, sollte er automatisch die Verbindung trennen. Weitere Informationen finden Sie auf der Manpage .clarktfu
return
dann~.
weitere Informationen apple.stackexchange.com/questions/35524/…