亚斯特2

亚斯特2

使用登录远程主机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] 

谢谢你的提示!

相关内容