次のようなシナリオがあります: user-a
systemd ユーザー サービスを実行していますuser-a-service
。私は root なので、そのユーザー サービスを再起動したいのですが、方法が見つかりません。基本的に、次の操作を実行したいのです:
systemctl --user user-a restart user-a-service
これはない特定の非ルートユーザーで実行される通常のシステム サービスですが、実際のユーザー サービスです。
答え1
これを行う唯一の方法は、systemctl
そのユーザーとして実行し、D-Bus ユーザー バスまたはプライベート systemd ソケットのいずれかを見つけられるように適切な環境変数を使用することです。
sudo -u user-a XDG_RUNTIME_DIR="/run/user/$(id -u user-a)" systemctl --user restart user-a-service
--machine
新しい systemd (v248) では、特別なホスト名を指定してループバック接続を使用できます.host
。これにより、PAM(ログイン) を自動的に呼び出すことで環境設定が処理されます。
systemctl --machine [email protected] --user restart user-a-service