Was ist der Unterschied zwischen ~. (Tilde-Punkt) und "Beenden", wenn Sie eine SSH-Verbindung beenden

1793
Hải Phong

Wenn ich in einer SSH-Sitzung eine X11-Verbindung im Hintergrund habe, muss ich die SSH-Sitzung verwenden ~.und nicht exitbeenden.

Was ist der Unterschied hier? Kann ich die Escape-Sequenz immer verwenden ~.?

9

2 Antworten auf die Frage

5
Marcus Müller

exitteilt der aktuellen Shell mit, dass sie das Programm beenden soll. Da (wenn keine getunnelte Verbindung, z. B. X11, aktiv ist), bedeutet, dass der Prozess, den sshd auf der Serverseite aufgerufen hat, beendet wurde, und SSH dann die Verbindung trennt.

~. ist die "magische" Escape-Sequenz, die von SSH erfasst und sofort getrennt wird (einschließlich des X11-Tunnels).

Nein, diese sind nicht austauschbar. Wenn Sie möchten, dass Ihre Remote-Shell (oder ein beliebiges Programm, das remote ausgeführt wird) ordnungsgemäß beendet wird, müssen Sie es entsprechend beenden.

3
Jakuje

Es ist bereits in der anderen Antwort gut beschrieben, aber ich würde etwas Hintergrund hinzufügen:

Einzelne SSH-Verbindungen können heute mehrere Sitzungen (Ihre Shells, Befehl), TCP-Weiterleitungskanäle und X11-Weiterleitungskanäle enthalten. Und da kommt der Unterschied:

  • Durch das Schreiben exit(oder Ctrl+ D) wird der Sitzungskanal heruntergerissen, wenn jedoch einige X11-Kanäle aktiv sind (zum Beispiel gvimlassen sich mehrere Verbindungen zum X-Server mit der Zwischenablage und dem Titel, die nicht geschlossen werden exit). Beim Schreiben exitwird diese X11-Anwendung ausgeführt, und Ihr Terminal bleibt "hängen", bis es geschlossen wird.

  • Das Schreiben ~.zerreißt die ganze Verbindung . Wenn Sie eine X11-Anwendung ausführen, können Sie feststellen, dass sie auch beim Schreiben geschlossen wird ~..