特定の時間にシステムタイマーをオーバーライドすることはできません。

特定の時間にシステムタイマーをオーバーライドすることはできません。

私はsystemd-cronこれを/lib/systemdの下にユニットファイルを作成するのに使います。ユニットファイルcron-daily.timer

[Timer]
OnCalendar=daily

これにより、真夜中にスクリプトが実行されます。私は彼らが午前3時に発射したいと思います。

ディレクトリoverride.confに作成するとcron-daily.timer.d/etc/systemd/system

[Timer]
OnCalendar=*-*-* 03:00:00

daemon-reloadを実行し、タイマーを再起動してからsystemctl list-timers00:00:00に実行するように実行し続けます。しかし、override.conf私の名前を変えると

[Timer]
OnCalendar=hourly

その後、期待どおりに毎時間実行しようとします。特定の時間に実行するようにサービスをオーバーライドできないのはなぜですか?

答え1

systemdタイマーユニットはさまざまなOnCalendar=サイズを持つことができるので、午前3時に実行されるオーバーレイを作成すると、実際に次へ追加その時間(一日二回、真夜中と午前3時に実行されるようにします。)

タイマーを一覧表示すると、次のスケジュールが表示されます。真夜中と午前3時の間にコマンドを実行しない限り、真夜中に元の実行が表示され、おそらく次の内容が表示されます。構成は実装されておらず、そうではありません。働く(hourly午後11時から真夜中の間にコマンドを実行しない限り、設定を変更すると変更が表示されることがあります。)

オーバーレイファイルを使用して毎日午前3時に実行されるようにcronを変更するには、dailyまず前の定義()を消去します。OnCalendar=これをnullに設定します。

[Timer]
OnCalendar=
OnCalendar=*-*-* 03:00:00

タイマーデバイスのsystemdのマニュアルページには、実際にはこれに関するドキュメントが記載されていますが、以下にあります。OnActiveSec=友達と、内容は次のとおりです。

これらのオプションのいずれかに空の文字列が割り当てられると、タイマーのリストがリセットされ、すべての以前の割り当てが無効になります。

関連情報