我想启动一个 python 脚本,用于pydbus
在启动时监听通过 D-Bus 传入的命令,并且它需要 root 权限。如果可以通过 停止并重新启动就好了systemctl
,所以我不想把它放入/etc/rc.local
.
该脚本基于这个例子。
我可以在终端(X11 会话和 tty)中很好地运行该脚本,并将命令发送到我的 dbus 服务器。但是当通过 systemd.service
文件启动它时,它会抱怨gi.repository.GLib.Error: g-io-error-quark: Cannot autolaunch D-Bus without X11 $DISPLAY (0)
,因为我一直在使用 SessionBus。所以我转而使用 SystemBus,现在出现权限错误:Connection ":1.474" is not allowed to own the service
这可能与/etc/dbus-1/system.d/
.
所以我查看了其他一些服务来了解它们是如何工作的:
/usr/share/dbus-1/system-services/org.manjaro.pamac.daemon.service
/etc/dbus-1/system.d/org.manjaro.pamac.daemon.conf
/usr/lib/systemd/system/pamac-daemon.service
这就是我需要使用的所有东西吗?这真是太麻烦了,我尝试的一切都会导致新的错误。
有关于如何做到这一点的好的资源吗?
如何使用 systemd.service
文件在启动时启动上面的链接示例?
答案1
我做了一个工作示例:
https://github.com/sezanzeb/systemd-pydbus-example
/usr/share/dbus-1/system-services/org.manjaro.pamac.daemon.service
我最终不需要这个文件。