如何以root身份重新启动另一个用户的用户服务?

sve*_*aro 4 linux systemd

所以我有这样的场景:user-a正在运行 systemd 用户服务user-a-service。我是 root,我想重新启动该用户服务。我找不到办法这样做。基本上我想要这个:

systemctl --user user-a restart user-a-service
Run Code Online (Sandbox Code Playgroud)

请注意,这不是使用特定非 root 用户运行的正常系统服务,而是实际的用户服务。

use*_*686 5

执行此操作的唯一方法是以systemctl用户 \xe2\x80\x93 身份运行,并使用适当的环境变量以允许其找到 D-Bus 用户总线或专用 systemd 套接字:

\n
sudo -u user-a XDG_RUNTIME_DIR="/run/user/$(id -u user-a)" systemctl --user restart user-a-service\n
Run Code Online (Sandbox Code Playgroud)\n

使用较新的 systemd (v248),您可以--machine通过指定特殊主机名来用于环回连接.host;它将通过自动调用 PAM(login) 来处理环境设置:

\n
systemctl --machine user-a@.host --user restart user-a-service\n
Run Code Online (Sandbox Code Playgroud)\n