Ответ 1
Это связано с тем, что процесс, который вы запускаете, открывает поток (stdout/stderr) и не закрывает его. Посмотрите здесь для более подробного объяснения и возможных решений.
Я устанавливаю Ubuntu Linux для запуска сервера OpenSSH. Мой DSL-маршрутизатор - это порт, перенаправляющий SSH-соединение. Когда я использую
ssh -X myhost
а затем откройте какую-нибудь программу GUI, затем закройте приложение GUI и выйдите, а затем выйдет SSH-выход. <Ctrl>-c
, похоже, работает, но его раздражает, когда нужно нажимать его каждый раз. Выход из системы не будет висеть, если я не открываю графический интерфейс.
У кого-нибудь есть идеи, как решить эту проблему?
Это связано с тем, что процесс, который вы запускаете, открывает поток (stdout/stderr) и не закрывает его. Посмотрите здесь для более подробного объяснения и возможных решений.
Я знаю, что это старый вопрос, но у меня была такая же проблема, и после некоторого рытья я нашел полезное решение. Теперь я закрываю соединения SSH с ~.
"завершать соединение (и любые мультиплексированные сеансы)", и это работает для меня. Эквивалентный символ нужно набирать на новой строке, и в моем случае escape-символ не отображается на экране (я в конечном итоге избегаю escape-символа, т.е. ~~
). FYI вы можете просмотреть перенаправленные соединения из сеанса SSH с помощью ~#
.
Полный список управляющих последовательностей типа ~?
в вашем сеансе SSH.
Поддерживаемые escape-последовательности:
~.
- завершить соединение (и любые мультиплексированные сеансы)~B
- отправьте сообщение BREAK на удаленную систему~C
- откройте командную строку~R
- запрос запроса (только протокол SSH 2)~^Z
- suspend ssh~#
- список перенаправленных соединений~&
- background ssh (при ожидании завершения соединения)~?
- это сообщение~~
- отправьте escape-символ, дважды введя его(Обратите внимание, что escape файлы распознаются сразу после новой строки.)
Вы можете отправить SSH на задний план автоматически после запуска удаленного приложения GUI:
ssh -X -f remote.host.name 'name_of_gui_application'
Это все равно потребует пароль, затем запустит приложение и сразу же запустит SSH.
Он также перенаправляет STDIN из /dev/null
, поэтому ваш сеанс не будет "зависать" после закрытия приложения (не то, что вы знаете, поскольку он все равно работает в фоновом режиме).
Вот что скажет об этой странице руководства SSH:
Рекомендуемый способ запуска X11-программ на удаленном сайте - это что-то вроде
ssh -f host xterm
.