
Я хочу сделать что-то немного странное. Я работаю по SSH.отсерверкклиент Snow Leopard для запуска процесса отображения данных X11. Другими словами, переадресация X11 SSH — это не то, что мне нужно.
Я могу сделать:
client$ echo $DISPLAY
/tmp/launch-SOMETHING/org.x:0
client$ ls -l $DISPLAY
srwx------ 1 myuser wheel 0 Dec 9 15:47 /tmp/launch-SOMETHING/org.x:0
И когда я это делаю:
server$ ssh myuser@client
client$ export DISPLAY=/tmp/launch-SOMETHING/org.x:0
client$ xterm
Я с радостью получаю свой xterm.
Тогда мне нужен какой-то способ узнать правильное значение $DISPLAY в моей сессии ssh. Из того, что я читал, $DISPLAY устанавливается launchd, но я не нашел способа увидеть это значение.
Если это имеет значение, я знаю, что когда мой процесс подключается от $server к $client, $client войдет в терминал как тот же пользователь.
решение1
Я не уверен, что это лучший ответ (подожду несколько дней, прежде чем отметить его!), но кажется многообещающим:
Сначала создадим скрипт на $client, скажем, save_display.sh:
#!/bin/bash
echo $DISPLAY > /path/to/saved_disp
Далее создайте для него LaunchAgent .plist, сохраните его в ~/Library/LaunchAgents. Запустите его с интервалом в 60 секунд или около того.
Наконец, загрузите его.в сеансе Аква:
launchctl load -S Aqua ~/Library/LaunchAgents/my.display.saver.plist
Если вы просто загрузите его обычным образом, $DISPLAY не будет установлен и ваш файл будет пустым.
Затем,
server$ ssh myuser@client
client$ export DISPLAY=`cat /path/to/saved_disp`
client$ xterm
и успех.
Кажется, продолжает работать после перезагрузок. Я очень доволен.