D-Bus——Bus服务查找和启动

        存放在 /usr/share/dbus-1/services 下的 .service 文件并不会由所有用户自动运行。它们是 D-Bus 服务描述文件,用于定义在需要时如何启动相应的服务。至于区分哪些用户需要运行这些服务,D-Bus 的会话总线和系统总线有不同的处理机制。

会话总线服务查找和启动

会话总线服务描述文件:

        存放在 /usr/share/dbus-1/services 和 ~/.local/share/dbus-1/services 下的 .service 文件用于定义会话总线服务。这些文件描述了当客户端请求某个服务时,如何启动该服务。

按需启动服务:

        当客户端向会话总线发送消息并请求某个服务时,如果该服务尚未运行,会话总线守护进程会查找服务描述文件来启动该服务。

        会话总线守护进程会检查服务描述文件中定义的启动命令,然后在当前用户的环境中启动该服务。

服务描述文件示例:

[D-BUS Service]

Name=com.example.MyService

Exec=/usr/bin/my-service --session

系统总线服务查找和启动

系统总线服务描述文件:

        存放在 /usr/share/dbus-1/system-services 和 /etc/dbus-1/system.d 下的 .service 文件用于定义系统总线服务。

        这些文件描述了当系统范围内的客户端请求某个服务时,如何启动该服务。

按需启动服务:

        当系统范围内的客户端向系统总线发送消息并请求某个服务时,如果该服务尚未运行,系统总线守护进程会查找服务描述文件来启动该服务。

        系统总线守护进程会以系统级别权限(通常是 root 权限)来启动这些服务。

服务描述文件示例:

[D-BUS Service]

Name=org.freedesktop.NetworkManager

Exec=/usr/sbin/NetworkManager --no-daemon

区分用户需求的机制

会话总线

        每个用户都有自己的会话总线实例,会话总线守护进程运行在用户的权限下。会话总线服务仅在该用户的会话中按需启动。当某个用户的应用程序请求一个会话总线服务时,会话总线会根据服务描述文件启动该服务,但只在当前用户的会话中运行。

系统总线

        系统总线是全局的,仅有一个系统总线实例,运行在系统级别。系统总线服务由系统总线守护进程按需启动,服务在系统范围内运行。系统总线服务通常为所有用户提供系统范围的功能,比如网络管理器、Udev 设备管理器等。

结论

        /usr/share/dbus-1/services 下的 .service 文件用于定义会话总线服务,仅在需要时由特定用户的会话总线守护进程启动,且仅在该用户的会话中运行。

        系统总线服务定义在 /usr/share/dbus-1/system-services 和 /etc/dbus-1/system.d 下,由系统总线守护进程按需启动,服务于整个系统的所有用户。

        这种机制确保了 D-Bus 服务能够按需启动,并且运行在合适的权限和环境下,为用户和系统提供灵活而可靠的进程间通信。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值