主要观点:systemd 通过 DBus 交互,介绍了 DBus 相关概念及busctl
的使用来与 systemd 通信。
关键信息:
- DBus 是 IPC 系统,有系统总线和用户总线两种。
- 服务通过名称标识,对象通过对象路径标识,接口包含信号、方法和属性。
busctl
可用于与 DBus 交互,org.freedesktop.systemd1
是 systemd 服务名称。- 可通过
busctl
获取 systemd 服务的对象及相关接口,如org.freedesktop.systemd1.Manager
。 - 以
NetworkManager.service
为例,可通过busctl
获取其对象路径、查看接口、读取属性(如ActiveState
)、重启服务等。 - 不能直接监控
ActiveState
,可通过监测PropertiesChanged
信号来间接获取。
重要细节: - 3 个特殊接口:
org.freedesktop.DBus.Introspectable
、org.freedesktop.DBus.Peer
、org.freedesktop.DBus.Properties
。 busctl call
的参数及用法,如获取NetworkManager.service
对象路径的命令。- 重启服务的两种方式及对应的参数。
busctl monitor
的匹配规则及用于监控PropertiesChanged
信号的命令。- DBus 的类型系统,包括各种数据类型对应的 ASCII 字符及规范。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。