使用登录远程主机ssh -X me@host
,我成功运行gnome-terminal -e "tail -F /var/log/file" &
。当我注销并第二天尝试同样的操作时,我得到以下信息:
无法获取会话总线:无法连接到套接字/tmp/dbus-K99gT9yDjS:连接被拒绝回退到非工厂模式。召唤GConf恶魔失败;退出。联系配置服务器失败;一些可能的原因是您需要为 ORBit 启用 TCP/IP 网络,或者由于系统崩溃而导致 NFS 锁失效。看http://projects.gnome.org/gconf/供参考。 (详细信息 - 1:无法连接到会话:无法连接到套接字 /tmp/dbus-K99gT9yDjS:连接被拒绝)
在这种情况下如何运行 gnome-terminal ?
答案1
事实上,当 SSH 会话打开时,它不会启动 dbus 会话。有些程序可能会启动它,但会话不知道它(因此无法关闭它)。
不了解 dbus 会话也意味着使用 dbus 但本身不启动它的程序将会出现问题。
dbus 部分针对每台机器和每台 X11 显示器。它们的信息存储在 $HOME/.dbus/session-bus/ 中,但是,那里引用的进程可能已关闭,因此需要进行额外检查以确定是否需要启动 dbus。然后,将变量导出到会话中。
然后它就像一个魅力:)
我将以下内容放入我的 .bash_profile 文件中:
# set dbus for remote SSH connections
if [ -n "$SSH_CLIENT" -a -n "$DISPLAY" ]; then
machine_id=$(LANGUAGE=C hostnamectl|grep 'Machine ID:'| sed 's/^.*: //')
x_display=$(echo $DISPLAY|sed 's/^.*:\([0-9]\+\)\(\.[0-9]\+\)*$/\1/')
dbus_session_file="$HOME/.dbus/session-bus/${machine_id}-${x_display}"
if [ -r "$dbus_session_file" ]; then
export $(grep '^DBUS.*=' "$dbus_session_file")
# check if PID still running, if not launch dbus
ps $DBUS_SESSION_BUS_PID | tail -1 | grep dbus-daemon >& /dev/null
[ "$?" != "0" ] && export $(dbus-launch) >& /dev/null
else
export $(dbus-launch) >& /dev/null
fi
fi
注意:hostnamectl 是 systemd 的一部分,允许检索机器 ID,dbus-launch 显示我们想要的变量;通过使用export $(dbus-launch)
我们检索 dbus-launch 的输出并导出变量
答案2
之前的答案都不适用于我的情况,但通过 dbus-launch 启动应用程序完成了这项工作:
ssh myhost "dbus-launch gnome-terminal --display localhost:10.0 &"
答案3
赶紧跑:
> dbus-launch gnome-terminal
答案4
有趣的是......仅仅重新启动 dbus 对我来说不起作用,我还必须删除机器 ID 文件并重新启动。
$ rcdbus stop
$ rm /var/lib/dbus/machine-id
$ rcdbus start
这是在我最近在 VMWare 中克隆的 SLES 11.4 服务器上。我的问题是我无法启动 yast2 或 gedit...
这些是我在命令行上看到的错误:
亚斯特2
** (y2controlcenter-gnome:9981): WARNING **: error accessing /desktop/gnome/lockdown/disable_command_line [Failed to contact configuration server; some possible causes are that you need to enable TCP/IP networking for ORBit, or you have stale NFS locks due to a system crash. See http://projects.gnome.org/gconf/ for information. (Details - 1: Failed to get connection to session: Failed to connect to socket /tmp/dbus-W7H31tbhVY: Connection refused)]
** (y2controlcenter-gnome:9981): WARNING **:
GError raised: [Failed to contact configuration server; some possible causes are that you need to enable TCP/IP networking for ORBit, or you have stale NFS locks due to a system crash. See http://projects.gnome.org/gconf/ for information. (Details - 1: Failed to get connection to session: Failed to connect to socket /tmp/dbus-W7H31tbhVY: Connection refused)]
user_message: [libslab_get_gconf_value: error getting /desktop/gnome/applications/main-menu/lock-down/user_modifiable_apps]
谢谢你的提示!