我正在尝试通过 X11 转发和 SSH 运行各种 Gnome 应用程序。某些应用程序会导致首先生成“dbus-launch”应用程序。问题是当 X 应用程序退出时 dbus-launch 不会关闭,因此必须在 SSH 会话正确关闭之前被终止。
我假设问题是 X/Gnome 应用程序无法连接到主消息总线守护进程,因此必须启动它们自己的副本?我怎样才能解决这个问题?或者我错过了什么?
这是一个例子。我启用了 X11 转发,似乎一切正常。
[me@host ~]$ gnome-calculator &
[1] 4803
(此处 gcalctool 程序启动并显示到我的删除 X 服务器 (Xming))
[me@host ~]$ ps
PID TTY TIME CMD
4706 pts/0 00:00:00 bash
4803 pts/0 00:00:00 gnome-calculator
4807 pts/0 00:00:00 dbus-launch
4870 pts/0 00:00:00 ps
(现在,在远程会话中关闭 gcalctool 应用程序之后)
[me@host ~]$ ps
PID TTY TIME CMD
4706 pts/0 00:00:00 bash
4807 pts/0 00:00:00 dbus-launch
4898 pts/0 00:00:00 ps
请注意,dbus-launch 仍然处于活动状态。最糟糕的是,这会阻止 SSH 连接正常关闭,直到它被终止。
请注意,系统范围的消息守护进程正在运行,如下所示:
[me@host ~]$ ps ax
4696 ? Ssl 0:00 dbus-daemon --system
我在这里错过了什么?我以前从未见过这种行为。据推测,我只见过可以不受阻碍地连接到消息总线守护进程的应用程序?我在 /etc/dbus-1 中寻找答案,但不知道要寻找什么。
在此先感谢您的帮助。
[编辑]
好的,我意识到我遇到了一个常见问题。这似乎是一种相当普遍的行为,但没有好的解决方案。我正在经历 SSH 挂起,因为 dbus-launch 在 tty 中仍然处于活动状态。但是似乎没有什么好的方法可以让 dbus 启动安静地发生。
查看 /etc/X11/xinit/xinitrc.d/00-start-message-bus.sh 可以提供一些关于“正常”X 会话应该发生什么的线索。当仅调用 X 应用程序到远程 X 服务器时,这当然不起作用。
作为临时解决方法,我已将其添加到我的 .bash_logout 中:
# ~/.bash_logout
pkill -u $USER -t `tty | cut -d '/' -f 3,4` dbus-launch
这将允许 SSH 会话关闭,但感觉很笨拙。有没有更好的解决方案?在没有 dbus 妨碍的情况下运行远程 X11 应用程序的正确方法是什么?