権限のないユーザーがサービスを管理できるように、systemdに--userサービスを作成しました。これは素晴らしい作品です。 1日の間に指定された時間にサービスを再起動したいので、ユーザーのcrontabにcronジョブを作成しました。
奇妙なことに、これはうまくいきません。ユーザーが次のコマンドを実行すると、サービスを再起動できます。
systemctl --user restart myservice.service
ただし、crontabでこのコマンドを実行してもサービスは再起動されません。理由を知っている人はいますか?
Ubuntu 16.04で実行されます。
ベストアンサー1
systemctl --user
DBUS_SESSION_BUS_ADDRESS
少なくとも設定を含むD-Busセッションと会話する必要がありますXDG_RUNTIME_DIR
。
XDG_RUNTIME_DIR=/run/user/$(id -u)
DBUS_SESSION_BUS_ADDRESS=unix:path=${XDG_RUNTIME_DIR}/bus
export DBUS_SESSION_BUS_ADDRESS XDG_RUNTIME_DIR
systemctl --user restart myservice.service
これを行うには、cronの代わりにsystemdタイマーを調べることをお勧めします。