Cronを使用したシステムユーザーサービスの再起動

Cronを使用したシステムユーザーサービスの再起動

権限のないユーザーがサービスを管理できるように、systemdに--userサービスを作成しました。これは素晴らしい作品です。 1日の間に指定された時間にサービスを再起動したいので、ユーザーのcrontabにcronジョブを作成しました。

奇妙なことに、これはうまくいきません。ユーザーが次のコマンドを実行すると、サービスを再起動できます。

systemctl --user restart myservice.service

ただし、crontabでこのコマンドを実行してもサービスは再起動されません。理由を知っている人はいますか?

Ubuntu 16.04で実行されます。

ベストアンサー1

systemctl --userDBUS_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タイマーを調べることをお勧めします。

おすすめ記事