Я плохо знаком с SSH. Я могу соединиться с удаленным компьютером. Я могу также запустить приложение на удаленном компьютере и видеть его GUI на моем экране.
Но я не знаю, как запустить приложение без него производящий, производят на моем экране.
Я хочу запустить приложение (например, rhythmbox) и закрыть соединение SSH, оставляя выполнение приложения, не отправляя никому выведенному на мой экран.
Бродя по сети я нашел некоторый совет, но ничто не помогло мне;
ssh -X name@domain
nohup rhythmbox &
logout
Вы подразумеваете, что хотите, чтобы Rhythmbox отобразился на экран удаленного компьютера? Экран, на который отображено приложение GUI, обозначается DISPLAY
переменная среды. Когда Вы работаете ssh -X
, DISPLAY
установлен на значение, которое указывает, что запросы дисплея должны быть переданы по соединению SSH. Для создания отображения приложения на экране удаленного компьютера установить DISPLAY
к значению :0
.
ssh username@example.com 'DISPLAY=:0 rhythmbox &'
Существует еще одно препятствие: когда приложение соединяется с X дисплеями, оно должно обеспечить своего рода пароль, названный cookie. Cookie сгенерирован каждый раз, когда X-сервер запускается. Ubuntu хранит cookie в файле со случайным образом сгенерированным именем. Самый легкий способ найти cookie состоит в том, чтобы сохранить его в известном имени файла, когда X-сервер запускается. На Ubuntu добавьте этот код к Вашему ~/.profile
:
case $DISPLAY:$XAUTHORITY in
:*:?*)
# DISPLAY is set and points to a local display, and XAUTHORITY is
# set, so merge the contents of `$XAUTHORITY` into ~/.Xauthority.
XAUTHORITY=~/.Xauthority xauth merge "$XAUTHORITY";;
esac
Для большего количества фона см., что ssh ОТОБРАЖАЕТ переменную.
Или Вы подразумевали, что никогда не хотите видеть окно Rhythmbox? Если так, заставьте его соединиться с виртуальным X-сервером, xvfb . Запустите виртуальный X-сервер, затем скажите Rhythmbox соединяться с ним.
ssh username@example.com 'Xvfb :1 -screen 0 800x600x8 & sleep 1; DISPLAY=:1 rhythmbox &'