我想从我的 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'