进一步阅读

进一步阅读

最近我注意到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.RealtimeKit1D-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.RealtimeKit1D-Bus 服务器的方法;
  • ...找出 D-Bus 客户端的要求org.freedesktop.RealtimeKit1busctl monitor并停止它;或者
  • ……面具systemdrtkit-daemon.service服务,这样系统本身即使桌面总线代理通过特殊且未记录的 API 请求激活它,也不知道如何激活它。

system-control这是 my有一个reset动词(根据当前启用/禁用状态启动/停止服务)并且我的替换dbus-daemon-launch-helper调用system-control reset而不是 的原因之一system-control activate

进一步阅读

答案2

狠狠地戳它:

sudo mv /usr/bin/dbus-daemon /usr/bin/dbus-daemonx
sudo ln -s /bin/true /usr/bin/dbus-daemon

您还可以删除原始文件并通过重新安装软件包将其恢复...

同样的方法也适用于其他不需要的东西^^

相关内容