На этот вопрос уже есть ответ здесь:
Я пытался поискать эту тему в гугле, но без каких-либо существенных результатов.
Мне нужно запустить какое-нибудь приложение с графическим интерфейсом из терминала, но мне все равно, что это приложение мне показывает. Кроме того, мне нужно запустить несколько экземпляров этого приложения в разных сеансах.Это связано с некоторыми автоматическими тестами графического интерфейса, поэтому я знаю, чего хочу, и ищу ответ :).
Я думаю, что правильные шаги должны быть такими:
но я застрял на первом шаге. У кого-нибудь здесь была подобная проблема?
--- РЕДАКТИРОВАТЬ: 1) Меня не волнует вывод графического интерфейса - мне нужны только stdout и stderr из моего приложения. - поэтому этот вопрос не повторяется - хорошо знаю гугл :). Я не хочу перенаправлять вывод в свой собственный графический интерфейс.
Если Вы не хотите видеть то, что делает приложение, можно предоставить его "виртуальный" X-сервер с xvfb:
Xvfb обеспечивает X-сервер, который может работать на машинах без аппаратных средств дисплея и никаких физических устройств ввода данных. Это эмулирует немой кадровый буфер с помощью виртуальной памяти. Основное использование этого сервера было предназначено, чтобы быть тестированием сервера, но другое новое использование для него было найдено, включая тестирование клиентов против необычных глубин и экранных конфигураций, выполнение пакетной обработки с Xvfb как фоновый механизм визуализации, тестирование загрузки, как помощь портированию X-сервера на новую платформу и обеспечения незаметного способа запустить приложения, которые не действительно нужны в X-сервере, но настаивают на том, чтобы иметь тот так или иначе.
После установки его, можно запустить его с:
sudo Xvfb :10 -ac -screen 0 1024x768x24 &
это будет работать в фоновом режиме, тогда Вы запускаете свои клиенты с:
DISPLAY=:10 your-client
Короткая команда:
ssh -X <username>@<host> gedit &
от man ssh
-X Enables X11 forwarding.
This can also be specified on a per-host basis in a configuration file.
X11 forwarding should be enabled with caution. Users with the
ability to bypass file permissions on the remote host (for the
user's X authorization database) can access the local X11
display through the forwarded connection. An attacker may then
be able to perform activities such as keystroke monitoring.
<час> Проверка /etc/ssh/sshd_config
на стороне сервера:
sudo nano /etc/ssh/sshd_config
для строк ниже:
X11Forwarding yes
X11UseLocalhost no
Перезапуск ssh сервер, если Вы внесли изменения:
sudo service ssh restart
Проверка /etc/ssh/ssh_config
на стороне клиента:
sudo nano /etc/ssh/ssh_config
для строк ниже
ForwardX11 yes
ForwardX11Trusted yes
Просто необходимо выполнить ДИСПЛЕЙ экспорта =:id# на ssh сессии, и запущенные программы будут работать на удаленном дисплее. Быстрый пример:
maythux@maythuxPC:~$ ssh testSSH@myServer
maythux@maythuxPC:~$ export DISPLAY=:0
maythux@maythuxPC:~$ gedit
Теперь gedit
будет работать на названном дисплее testSSH пользователя
, можно сократить это все вниз в единственную команду:
ssh testSSH@myServer "DISPLAY=:0 nohup gedit"