唯一连接名称 unique connection names :以冒号(':')字符开头的 bus name是唯一的连接名称。例如 :1.0。每个连接都有一个唯一名。在一个 消息总线的生命期内,不会有两个连接有相同的唯一名。
公共连接名称 well-known bus names:公共名称是以反向DNS域名(小写)例如:org.fedoraproject.FirewallD1。
如果DNS 域名包含连字符/减号,则应将其替换为下划线,如果包含数字,则应通过添加下划线进行转义。例如: 7-zip.org的bus name应该定义为 org._7_zip.Archiver。
Reference
对象路径对象路径(Object Paths) 是用于引用对象实例的名称(类似于 C++ 或 Java 对象)。从概念上来说,D-Bus在消息交换中每个参与者都有任意个对象实例,如文件系统一样,Dbus中的参与者中的对象实例也会形成一个层次树。如,在CentOS7中 firewalld开发的D-Bus API 使用了/org/fedoraproject/FirewallD1的层次结构。
在定义一个对象路径时,需要注意以下:
路径可以是任意长度
路径必须以 ASCII 'http://www.likecs.com/'(整数 47)字符开头,并且必须由以斜杠字符分隔的元素组成。
每个元素只能包含 ASCII 字符 [AZ][az][0-9]_
不允许出现 空字符串
多个 / 字符不能依次出现。 除非路径是根路径(单个/字符),否则不允许尾随 /字符。
接口名称interface,在每个 Object Path都包含多个接口,一般情况下接口名称应以反向 DNS 域名开头(小写),(同 Java 中的接口名称)。在命名规则上,与bus name相同。
例如:CentOS7中 firewalld开发的D-Bus API 定义的管理zone的接口 org.fedoraproject.FirewallD1.config.zone。如果DNS名称中包含-,则应将其替换为下划线 _。如果DNS 域名包含紧跟在 . 之后的数字,则接口名称应在数字之前添加一个下划线。例如,如果 7-zip.org 插件定义了一个接口,应该被命名为org._7_zip.Plugin.
成员方法名称成员方法名称,Member names ,对于定义了接口后,需要实现其接口的放法,如需要获得firewalld的zone时,就可以调用 org.fedoraproject.FirewallD1.getDefaultZone 。在D-Bus中Member names通常由“驼峰式”(camel-case)命名 。
dbus在Linux中,如CentOS dbus包括 dbus daemon及一些cli commad。这些包
dbuslib
D-Bus的消息最基本的D-Bus协议是一对一的通信协议。与直接使用socket不同,D-Bus是面向消息的协议。 D-Bus的所有功能都是通过在连接上流动的消息完成的。
而在D-Bus中有四种类型的消息
METHOD_CALL 方法调用
METHOD_RETURN 方法返回
ERROR 错误
SIGNAL 信号:与方法调用不同,信号发射没有响应。信号发射只是一个类型为 SIGNAL 的消息。它必须具有三个标头字段:PATH给出发出信号的对象,加上INTERFACE并MEMBER给出信号的完全限定名称。
消息返回的类型
Conventional name 十进制值 说明INVALID 0 这是个无效类型
METHOD_CALL 1 方法调用,该方法会有提示
METHOD_RETURN 2 方法返回的数据
ERROR 3 错误返回,第一个是其错误的信息
SIGNAL 4 信号的发射
CentOS的dbus服务管理
在CentOS7中,作为systemd的一部分D-BUS会从Systemd获取套接字文件描述符,并使用D-Bus交换当前进程生成的socket信息。而PID 1 不使用 PolicyKit 来控制对特权操作的访问,而是完全依赖于 low-level API D-Bus 。(这样做是为了避免 PolicyKit 和 systemd/PID 1 之间的循环依赖。)而有些特权进程(例如关机/重启/挂起/登陆)可以通过logind进行管理的。
由此,可以知道在CentOS中,dbus相关的服务大概有 dbus,与 logind。
dbus包含:
dbus-daemon:dbus架构中 layer 2的 dbus-damon
dbus-send: dbus提供的命令行工具,可以用dbus-send来发送消息。
dbus-monitor: dbus提供的命令行工具,用于监视总线上流动的消息。
dbus-launch: shell脚本启动消息总线的命令行工具
dbus配置文件说明dbus-daemon守护进程,有两个配置文件,一个为 session bus,另外一个为 system bus。
标准的system bus文件 /usr/local/share/dbus-1/system.conf session bus配置 /usr/local/share/dbus-1/session.conf中配置。在一般情况下,不会操作这两个文件,因其会引入 /etc/dbus-1 中的system.conf 或 session.conf。
配置文件包含的标签: