所以我有这样的场景: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