我通过多个登录会话访问计算机。会话的生命周期可以重叠也可以不重叠。就我而言,这些登录会话当前始终通过SSH进行,但我也希望处理本地会话。
有时在这些会话中需要D-Bus,并且为了使用GVFS,我想在这些登录会话中共享相同的D-Bus会话。
推荐的方法是什么?我不想中断我可能不知道的D总线的使用。我考虑过使用
export $(dbus-launch --autolaunch $(cat /var/lib/dbus/machine-id))
但是(从Ubuntu 12.04开始)这似乎不正确:
- 这需要一个X会话,但是我的SSH会话可能转发或可能不转发X显示,甚至那些不相同的X会话
$DISPLAY
; - 如果没有可用的X显示,则
dbus-launch
抱怨“自动启动错误:X11初始化失败。”并且没有启动守护程序; - 在
dbus-launch
那个“男人页面状态--autolaunch
的选项被认为是一个内部实现细节(...)。无论如何,没有真正的理由在libdbus实现之外使用它。”
dbus-launch
D-Bus套件中的或其他工具是否支持自动检测运行dbus-daemon
并连接到它?~/.dbus/session-bus/$(cat /var/lib/dbus/machine-id)-${DISPLAY#*:}
D-Bus是通过X连接启动的,但是如果没有X连接可用,该信息似乎不会存储在任何地方。
我应该拼凑自己的D-Bus会话文件吗?如果可以,我应该在~/.dbus/session-bus
目录中使用文件吗?路径/var/lib/dbus/machine-id
可靠且可移植吗?
1
:这个答案可能是你的解决方案的一部分 serverfault.com/questions/405518/...
—
sdive
2年前,我对DBus摆弄了很多东西,从书中读到的所有东西都留在了我的记忆中,包括资料来源:DBus可能很酷,但是经过专门设计,可以作为系统实例运行一次,并且可以再次运行对于每个本地用户会话来说,这只是愚蠢的,而不是很酷的。我的猜测是您必须自己做所有事情。我做到了,但是我总是进行X次会话,因此对我来说稍微容易一些。祝好运。
—
Bananguin
—
Fiisch