
我想做一些有點奇怪的事。我正在使用 SSH從一台伺服器到Snow Leopard 用戶端啟動 X11 資料顯示進程。也就是說,SSH的X11轉發不是我想要的。
我可以:
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。
那麼,我需要的是某種方法來找出 ssh 會話中 $DISPLAY 的正確值。據我所知, $DISPLAY 是由 launchd 設定的,但我還沒有找到任何方法來查看該值。
如果重要的話,我知道當我的進程從 $server 連接到 $client 時,$client 將以相同使用者身分登入終端。
答案1
我不確定這是否是最好的答案(要等幾天才能標記它!)但似乎很有希望:
首先,在 $client 上建立一個腳本,例如 save_display.sh:
#!/bin/bash
echo $DISPLAY > /path/to/saved_disp
接下來,為其建立一個 LaunchAgent .plist,並將其儲存在 ~/Library/LaunchAgents 中。讓它以 60 秒或類似的間隔開始。
最後,加載它在 Aqua 會議中:
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
和成功。
似乎在重新啟動後仍能繼續工作。我對此很滿意。