如何以 root 身份使用 user-systemctl?

如何以 root 身份使用 user-systemctl?

我想从我的 root shell 启动用户服务,而不登录用户 shell。

我尝试过以下命令,但失败:

#> su - username -c "systemctl --user"
Failed to connect to bus: No such file or directory

我如何实现我的目标?

答案1

下面的命令似乎有效,但看起来相当不愉快。

su - username --shell=/bin/sh -c 'export XDG_RUNTIME_DIR=/run/user/$(id -u); systemctl --user'

答案2

以下对我有用:

runuser -u USER -- systemctl --user start USER.SERVICE

答案3

我正在使用一个简单的

# systemctl start servicename@username

例如

# systemctl start tmux@e

用于启动我自己的全局 systemd 管理的 tmux 会话。

答案4

将其他答案的所有部分放在一起(并使用推荐的runuser而不是su),这适用于当前的 Debian/Ubuntu:

runuser username -c 'env XDG_RUNTIME_DIR=$(id -u) systemctl --user'

相关内容