所以我有這樣的場景:user-a
正在運行 systemd 用戶服務user-a-service
。我是 root,我想重新啟動該用戶服務。我找不到辦法這樣做。基本上我想要這個:
systemctl --user user-a restart user-a-service
請不要這樣不是使用特定非 root 使用者執行的普通系統服務,但實際的使用者服務。
答案1
執行此操作的唯一方法是以systemctl
該使用者身分執行 - 並使用適當的環境變數以允許其找到 D-Bus 使用者匯流排或專用 systemd 套接字:
sudo -u user-a XDG_RUNTIME_DIR="/run/user/$(id -u user-a)" systemctl --user restart user-a-service
使用較新的 systemd (v248),您可以--machine
透過指定特殊主機名稱來用於環回連線.host
;它將透過自動呼叫 PAM(login) 來處理環境設定:
systemctl --machine [email protected] --user restart user-a-service