最近我注意到rtkit-daemon
在我的 Debian 10.4 机器上运行的进程可能会干扰该机器上的自定义服务器应用程序。所以我想像这样禁用实时套件守护进程:
$ sudo systemctl stop rtkit-daemon.service
$ sudo systemctl disable rtkit-daemon.service
这正确地停止(并禁用)了该rtkit-daemon
过程。然而,过了一会儿我注意到它再次运行,并且在系统日志中我发现了以下几行:
Jun 12 16:15:12 box-63 dbus-daemon[453]: [system] Activating via systemd: service name='org.freedesktop.RealtimeKit1' unit='rtkit-daemon.service' requested by ':1.6746' (uid=1000 pid=11857 comm="python pipecheck.py")
Jun 12 16:15:12 box-63 systemd[1]: Starting RealtimeKit Scheduling Policy Service...
Jun 12 16:15:12 box-63 dbus-daemon[453]: [system] Successfully activated service 'org.freedesktop.RealtimeKit1'
Jun 12 16:15:12 box-63 systemd[1]: Started RealtimeKit Scheduling Policy Service.
这python pipecheck.py
就是我们的自定义应用程序。
为什么 D-Bus 首先要为我们的应用程序启动实时套件?
不管怎样,显然dbus-daemon
已经重新启动了rtkit-daemon
。
我怎样才能防止这种情况并永久禁用实时套件守护进程?
答案1
欢迎使用Desktop Bus总线激活!这是一种痛苦,应该避免。
桌面总线客户端(某种)正在请求桌面总线代理与org.freedesktop.RealtimeKit1
D-Bus 服务器进行通信。当rtkit-daemon
程序运行时,它会以此名称向 D-Bus 代理注册自己。当它没有运行时,代理调用D-Bus总线激活。
当客户端在这种情况下询问 D-Bus 代理时,代理会查看文件中指定的内容org.freedesktop.RealtimeKit1.service
。 (这是不是一个 systemd 服务单元文件,但 D-Bus 配置文件位于 下/usr/{local/,}share/dbus-1/system-services/
,D-Bus 也使用.service
扩展名。)代理从该文件中了解到,仅在 systemd 系统上,org.freedesktop.RealtimeKit1
服务器作为 systemd 服务进行管理rtkit-daemon.service
。
经纪人systemd
通过同一个桌面总线进行对话,使用一种特殊且无证的方式org.freedesktop.systemd1.Activator
D总线服务名称,要求它激活rtkit-daemon.service
系统带有ActivationRequest
消息的服务。这个未记录的激活函数没有概念仅在启用时激活该服务。它总是激活服务,即使它被禁用。
因此,具有讽刺意味的是,您无法rtkit-daemon
使用明显的禁用方法(disable
命令)来禁用它。您可以改为:
- …
org.freedesktop.RealtimeKit1.service
用您自己的文件覆盖该文件,其中不包含激活org.freedesktop.RealtimeKit1
D-Bus 服务器的方法; - ...找出 D-Bus 客户端的要求
org.freedesktop.RealtimeKit1
,busctl monitor
并停止它;或者 - ……面具systemd
rtkit-daemon.service
服务,这样系统本身即使桌面总线代理通过特殊且未记录的 API 请求激活它,也不知道如何激活它。
system-control
这是 my有一个reset
动词(根据当前启用/禁用状态启动/停止服务)并且我的替换dbus-daemon-launch-helper
调用system-control reset
而不是 的原因之一system-control activate
。
进一步阅读
- 乔纳森·德博因·波拉德 (2016)。避免桌面总线 (D-Bus) 总线激活 。吃点东西。软件。
- 乔纳森·德博因·波拉德。 ”
reset
“。system-control
。 小吃指南。 - 乔纳森·德博因·波拉德。
dbus-daemon-launch-helper
。 小吃指南。
答案2
狠狠地戳它:
sudo mv /usr/bin/dbus-daemon /usr/bin/dbus-daemonx
sudo ln -s /bin/true /usr/bin/dbus-daemon
您还可以删除原始文件并通过重新安装软件包将其恢复...
同样的方法也适用于其他不需要的东西^^