D-Bus
外观
(从 Dbus-broker 重定向而来)
D-Bus 是一个消息总线系统,它为进程间通信提供了便捷的方式。它包括一个守护进程(可以系统范围运行,也可以为每个用户会话运行)以及一套库,使应用程序能够使用 D-Bus。
dbus 是作为 systemd 的依赖被拉取和安装的,并且为每个用户自动启动用户会话总线。
实现
Arch 提供了两种 D-Bus 消息代理实现。最初,在安装 systemd 包时,系统会要求用户选择所需的 dbus-units 提供者。一次只能安装一种实现。
dbus-broker
dbus-broker 目前是 Arch 的默认实现 [1] [2]。它是参考实现的直接替代品,旨在“提供高性能和可靠性,同时保持与 D-Bus 参考实现的兼容性”。
当被询问 dbus-units 提供者时,选择 dbus-broker-units,或显式安装它。
参考实现
参考实现仍然得到 Arch 的官方支持。
当被询问 dbus-units 提供者时,选择 dbus-daemon-units,或显式安装它。
技巧与提示
覆盖 D-Bus 服务
这在指定多个提供相同知名总线名称的服务中的特定服务时很有用。例如,请参见 KeePass#Autostart 和 KDE Wallet#Automatic D-Bus activation。
可以通过在 $XDG_DATA_HOME/dbus-1/services 的服务文件中设置 Exec=/bin/false 来屏蔽 D-Bus 服务。例如,要屏蔽 gvfsd,
$ cp /usr/share/dbus-1/services/org.gtk.vfs.Daemon.service ~/.local/share/dbus-1/services $ sed -i 's|^Exec=.*|Exec=/bin/false|' ~/.local/share/dbus-1/services/org.gtk.vfs.Daemon.service
如果服务已经启动,覆盖将不起作用。必须终止现有服务的进程,或者更早地启动。
调试
- Bustle — 绘制 D-Bus 活动的序列图。它显示信号发射、方法调用及其相应的返回,并为每个单独的事件提供时间戳和每个方法调用的持续时间。
- D-Feet — 易于使用的 D-Bus 调试器 GUI 工具。已停止开发。
- D-Spy — 易于使用的 D-Bus 调试器 GUI 工具。D-Spy 可用于检查正在运行的程序的 D-Bus 接口并调用这些接口上的方法。
- Qt D-Bus Viewer — GUI D-Bus 调试器。可用于检查 D-Bus 服务并调用其中的方法。
参见
- https://freedesktop.org/wiki/Software/dbus/
- https://freedesktop.org/wiki/IntroductionToDBus/
- https://uyha.github.io/technical/dbus-systemd.html systemd 使用 DBus 作为与其交互的机制。本文介绍了进行 D-Bus 概念所需的最少知识以及使用
busctl与 systemd 进行通信的方法。