user-systemctlをrootとして使用するには?

user-systemctlをrootとして使用するには?

ユーザーシェルにログインせずにルートシェルでユーザーサービスを開始したいと思います。

次のコマンドを試しましたが失敗しました。

#> 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'

関連情報