Ich verwende einen ProxyJump-Befehl für eine Reihe von SSH-Sitzungen, die ich täglich verwende, und tausche Benutzer in diesen Sitzungen häufig aus, und es exit
macht keinen Spaß, drei- oder viermal hintereinander zu tippen .
Ich kenne newline
+ ~
+, .
um eine SSH-Sitzung zu beenden. Ich muss immer noch prüfen, ob sie einvernehmlich beendet wird exit
, aber wie beendet man alle Sitzungen in der aktuellen Shell mit einem einzigen Befehl oder einer Tastenkombination, bei der man drei- exit
oder viermal tippt in meinem Fall wird eine einmalige Sache?
~.
Trennt einfach Ihren SSH-Client (nützlich, wenn beispielsweise das Netzwerk verschwunden ist). Normalerweise erkennt der SSH-Daemon dies und signalisiert seine Sitzung mitSIGHUP
, so dass dies nicht ganz dem normalen Beenden der Shell entspricht (es ist jedoch nützlich, wenn Sie keine Antwort von der Shell erhalten).Antworten:
Ctrl- Dwird in vielen Fällen eine Shell verlassen. Es ist schneller als das Tippen
exit
Enter. Es ist immer noch kein einziger Befehl, alles zu beenden, aber das mehrmalige Halten Ctrlund Schlagen Dist einfacher und schneller. Nicht sicher, wie wertvoll dies für Ihren Anwendungsfall ist.Hier ausführlich besprochen .
quelle
rm
Befehl ein und drücken Sie STRG + D, wenn Sie ihn nicht ausführen möchten. Ich sehe dieses Verhalten nicht in ksh.vi
Terminal-Eingabebindungen.Die Eingabe
~.
tatsächlich tut den Trick des Schließens alle die „verschachtelte“ Verbindungen bis in die tiefsten.Dies geschieht mit dem von Ihnen gewünschten gütlichen Ausgang, solange alle Ihre Muscheln so konfiguriert sind, dass SIGHUP als würdevoller Tod behandelt wird. Bash tut dies standardmäßig. Sie können ganz einfach den gütlichen Ausgang für Ihr Set-up überprüfen , indem Sie zB sehen , ob die
.bash_history
Dateien Ihrer tieferen Sitzungen richtig , nachdem die aktualisiert werden~.
, oder wenn Sie Ihr bash-es nicht zu aktualisieren .bash_history Satz bei der Ausgabe dann könnten Sie einen Satztrap
auf dem EXIT-Ereignis (oder in Ihrem~/.bash_logout
) mit einem Befehl, der irgendwo etwas schreibt und später prüft, ob es ausgeführt wurde.Außerdem bin ich mir nicht sicher, was Sie unter "Alle Sitzungen in der aktuellen Shell beenden" verstehen. Jede interaktive Bash ist nur eine Sitzung, und die von Ihnen eingegebenen Befehle werden immer nur an die tiefste Shell der ProxyJump-Kette gesendet. Wenn Sie "die Hintergrundjobs in der aktuellen Shell" gemeint haben, sendet bash SIGHUP an alle seine Jobs, wenn der ssh-Daemon SIGHUP empfängt.
~.
Daher sollte ein solcher Exit vollständig einvernehmlich sein, wenn die ausgeführten Jobs ordnungsgemäß auf ein SIGHUP reagieren.quelle