В чем разница между ~. (точка тильды) и «выход» при выходе из SSH-соединения


12

Всякий раз, когда у меня есть фоновое соединение X11 в сеансе SSH, я должен использовать, ~.а не exitвыходить из сеанса SSH.

В чем здесь разница? Могу ли я всегда использовать escape-последовательность ~.?

Ответы:


7

exitговорит вашей текущей оболочке выйти. Так как (когда нет туннельного соединения, например, X11, активно), это означает, что процесс, вызванный sshd на стороне сервера, завершился, SSH затем отключается.

~. это «магическая» escape-последовательность, которую SSH захватывает и немедленно отключает (включая туннель X11).

Так что нет, они не взаимозаменяемы. Если вы хотите, чтобы ваша удаленная оболочка (или какая-либо программа, запущенная удаленно) корректно завершилась, вы должны соответствующим образом завершить ее.


5

Это хорошо описано уже в другом ответе, но я бы добавил немного предыстории:

Сегодня одно SSH-соединение может содержать несколько сеансов (ваши оболочки, команды), каналы пересылки TCP и каналы пересылки X11 . И тут возникает разница:

  • Запись exit(или Ctrl+ D) разрушает сеансовый канал, но если есть активные некоторые каналы X11 (например, gvimоставляет несколько подключений к X-серверу, обрабатывающему буфер обмена и заголовок , который не закрыт exit). Запись exitбудет оставить это приложение X11 работает и ваш терминал будет «висеть» до тех пор, пока не будет закрыт.

  • Запись ~.разрушает всю связь . Вы можете заметить, что если вы запускаете какое-то приложение X11, оно также закрывается, когда вы пишете ~..

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.