我想做一些有点奇怪的事情。我正在使用 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
和成功。
似乎重启后仍能继续工作。我对此非常满意。