この2つの複雑なcronステートメントの形式をどのように指定しますか?

この2つの複雑なcronステートメントの形式をどのように指定しますか?

非常に具体的な2つのcron文が必要です。

  1. 毎月第2月曜日の02:00から4時間ごとに実行され、/opt/bin/cleanup.shファイルを実行するcronエントリ。

  2. 毎月3日18:15に実行されるcronエントリで、「r」で終わり、/opt/bin/verrrrrrrry.shを実行します。

私は様々なクローンテスターを試してみました。

スケジュールされたジョブチェッカー計画された作業テスター、そしてスケジュールされた作業翻訳者

しかし、上記のように、これらのどれも高度なcron式を処理できないようです(または正しい式の形式を指定する方法がわかりません)。

クローントリガーチュートリアルそして ウィキペディア

私のcronステートメントをどのように確認できますか?デーモンがイベントを実行できるように、実際のイベントが完了するのを待つことはできません。

高度な式をサポートする良いクローンテスターはありますか?それとも、cronデーモンに式を解析させるか、これらの式をどのようにエンコードしますか?

この声明について私が今まで理解してきたのは次のとおりです。

  1. 0 2 * * 0#2 /opt/bin/cleanup.sh
  2. 15 18 3 * * /opt/bin/verrrrrrrry.sh

しかし、もちろん、これらのどれも正確ではありません。

#1の場合、「2番目の月曜日」を指定する方法や02:00に始まり、「4時間ごと」を指定する方法がわかりません。

#2の場合、手動でコーディングせずに「r」で終わる月だけを指定する方法がわかりません。 3日目をどのように指定するのかわかりません。

ベストアンサー1

毎月2番目の月曜日にのみタスクを実行するには、曜日の値が1でなければならず、日付の値は8〜14でなければならず、時間は2、6、10、14、18、22でなければなりません。そして分0. しかし、dhagが正しく説明し、解決策を提供したように曜日と月を指定すると(そうでない*)、どちらかが一致したときにプログラムが実行されます。したがって、どちらかを明示的にテストする必要があり、曜日は簡単です。

 0 2,6,10,14,18,22 8-14 * * test $(date +\%u) -eq 1 && /opt/bin/cleanup.sh

最後の1は月曜日、月の日付範囲(8-14)を決定します。 2番目の月曜日の場合にのみ選択してください。

「r」で終わる毎月3日18:15:

 15 18 3 september,october,november,december * /opt/bin/verrrrrrrry.sh

(少なくともVixie cronでは月名を使用できます。サポートしていない場合は置き換えることができます9-12。)

おすすめ記事