Intereting Posts
Найти все измененные файлы svn и скопировать файлы, измененные в одной структуре папок Автоматическое обновление системы Debian Как правильно разрешить пользователям jenkins писать в определенный каталог в домашнем каталоге пользователя minecraft? Использование переменных для хранения цветовых кодов терминала для PS1? Что происходит, когда я повторяю аргумент `-e`? Как перенаправить вывод tarsnapper в / dev / null? checkPermissions Отсутствует доступ для записи в / usr / local / lib / node_modules Скопировать несколько файлов в один каталог с параллельным Как искать '/>' с sed Что делает дистрибутив Linux «Enterprise»? Как определить, работает ли сеанс терминала на экране Постоянное выполнение команды терминала Как увидеть содержимое упавших пакетов в цепочке OUTPUT в iptables Virtualbox не может загрузить плагин платформы Qt «xcb» на Crunchbang Waldorf Установка Packet Tracer на устройства ARM

Linux ssh запускает графическое приложение и оставляет его запущенным?

У меня есть ssh доступ к моему собственному серверу с установленным Ubuntu 13.10.

Через ssh я могу запускать приложения GUI, используя этот подход:

 $ ssh -X my_login@address_of_sever 

После этого я могу запустить любое приложение по имени, например gedit , firefox , google-chrome , и оно будет открыто на моей клиентской машине (просто окно, фактически приложение работает на удаленной машине, то есть на сервере).

Все в порядке.

Но когда я закрываю приложение GUI на клиентской машине, он закрывается и на сервере (это кажется законным).

Я могу запускать консольные приложения, используя такие команды, как:

 $ nohup php somefile.php & 

и он продолжит работу после закрытия соединения.

Интересно, возможно ли сделать то же самое с графическим приложением?

В идеале это было бы, если бы было возможно переместить открытое окно на сервер и вернуть его клиенту, когда необходимо посмотреть, что там происходит, возможно, какое-то переключение?

Да, вы можете сделать это с помощью xpra . На своей домашней странице:

«Чтобы запустить приложение (простой xterm в этом примере) в удаленной системе и отобразить его на локальном компьютере, просто запустите:

 xpra start ssh:SERVERHOSTNAME:100 --start-child=xterm 

Это похоже на ssh -X, но это быстрее, и вы можете отключить и повторно подключиться к сеансу столько раз, сколько хотите. (очевидно, xpra должен быть установлен на вашем сервере). Чтобы повторно подключиться или подключиться к этому сеансу с другого компьютера, используйте команду attach (вы также можете использовать графический интерфейс xpra_launcher):

 xpra attach ssh:serverhostname:100 

Единственный способ, которым я знаю, где вы можете возобновить приложение GUI таким образом, – запустить приложение на рабочем столе удаленного сервера, а затем использовать приложение, такое как VNC, для удаленного подключения к рабочему столу удаленной системы. Затем вы можете разорвать это соединение и возобновить его по мере необходимости.

Я не знаю о каком-либо методе, когда вы можете возобновить приложение GUI, где приложение будет удаленно отображаться на вашем локальном рабочем столе.

Для консольных приложений вы можете использовать консольные менеджеры, такие как screen или tmux чтобы возобновить эти подключения, или же они сохраняются, когда соединение SSH, используемое для их инициирования, прерывается, а затем восстанавливается позже.

Вы не можете. «ssh -X» использует ssh-канал для пересылки протокола X11. Если вы завершаете приложение ssh, соединение больше не может подключаться к серверу.

То, что вы можете сделать с помощью ssh и X11, заключается в том, что если ваша сеть является локальной и безопасной, необходимо запустить X-сервер на вашем компьютере в режиме прослушивания tcp (есть и опция во многих диспетчера дисплеев, либо в gui, либо в текстовых конфигурациях, которые вы должны удалите -nolisten tcp). После этого, если вы это сделаете:

 mydesktop$ xhost +myserver mydesktop$ ssh myserver myserver$ export DISPLAY=mydesktop:0 myserver$ xterm & disown ctrl-C mydesktop$ 

Ваш xterm продолжит работу, запущенный ssh, но xterm будет подключен через TCP без ssh.