ユーザーシェルにログインせずにルートシェルでユーザーサービスを開始したいと思います。
次のコマンドを試しましたが失敗しました。
#> 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
グローバルシステム管理のために独自のtmuxセッションを開始するために使用されます。
答え4
他の回答のすべての部分を1つにまとめ(runuser
代わりに推奨回答を使用してsu
)、現在Debian / Ubuntuで動作します。
runuser username -c 'env XDG_RUNTIME_DIR=$(id -u) systemctl --user'