Systemd

啟動 dbus 服務的 systemd 服務

  • December 21, 2020

我想啟動一個 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文件在啟動時啟動上面的連結範例?

我做了一個工作範例:

https://github.com/sezanzeb/systemd-pydbus-example

最後我不需要這個/usr/share/dbus-1/system-services/org.manjaro.pamac.daemon.service文件。

引用自:https://unix.stackexchange.com/questions/625453