cronjobスケジュール - 3ヶ月に1回

cronjobスケジュール - 3ヶ月に1回

私は偶然次の例を見つけました。

0 9 1-7 * 1 *                       First Monday of each month, at 9a.m.
  1. 1-7毎月の日付になるべき部分は不明です。なぜ1-7代わりに*

  2. 3ヶ月ごとに0000ポイントで実行されるcronjobを作成する方法は?

    0 0 1 */3 * *
    

上記の内容は正しいですか?

答え1

#* * * * * command to be executed
#- - - - -
#| | | | |
#| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
#| | | ------- Month (1 - 12)
#| | --------- Day of month (1 - 31)
#| ----------- Hour (0 - 23)
#------------- Minute (0 - 59)

あなたは正しいです。 5つのアスタリスクの後にはシェルコマンドが必要です。

を実行して、cronタブが実行されていることを確認できますtail -f /var/log/syslog | grep CRON。テスト目的でn数分間使用できます。

答え2

0 9 1-7 * *ジョブは1日1回(9:00)実行されますが、毎月最初の7日間のみ実行されます。毎月最初の月曜日にタスクを実行する1つの方法は次のとおりです。最初の7日間はジョブを実行しますが、その日付が月曜日でない限り、何もしません。

0 9 1-7 * *  if [ "$(date +%u)" = 1 ]; then do_stuff; fi

0 9 * 1 *毎週月曜日にこのタスクを実行します。毎月最初の月曜日にタスクを実行する別の方法は次のとおりです。毎週月曜日にジョブを実行しますが、毎月の最初の7日以外に何もしないでください。

0 9 * * 1  if [ "$(date +%_d)" -le 7 ]; then do_stuff; fi

0 9 1-7 * 1 *2つのアプローチを組み合わせる試みが失敗したようです。これは0 9 1-7 * 1毎週月曜日に実行されます。そして毎月最初の7日ごと。

0 0 1 */3 *(最後にもう1つ追加した場合*)毎月1日の真夜中にジョブを実行しますが、その月が3の倍数の場合にのみ適用されます。これは実際に3ヶ月に1回行われます。

答え3

参考にしてください、」3ヶ月目「そして」3ヶ月に1回最初は、その年の最初の月から始まり、3ヶ月ごとを意味します。たとえば、2021-11-01 00:00:00を開始点にすると、次のようになります。

  • 次回2021-04-01 00:00:00
  • それでは2021-07-01 00:00:00
  • それでは2021-10-01 00:00:00
  • それでは2021-01-01 00:00:00

これを達成するには、構文が提案したとおりにする必要が0 0 1 */3 * *あります。これを見てここ

もう一つは現在3ヶ月を考慮することだ。たとえば、2021-11-01 00:00:00を開始点として使用すると、次のようになります。

  • 次回2022-02-01 00:00:00
  • それでは2022-05-01 00:00:00
  • それでは2022-8-01 00:00:00
  • それでは2022-11-01 00:00:00

これを達成するために、構文は0 0 1 2-12/3 * *提案したとおりです。これを見ればいいここ

「数量」を計算する必要があることに注意してください。あなたが望む毎月そして、この数字からその年の最後の月(12月)まで始めます。前の例では、開始月は11月(11月)であり、次の3ヶ月を計算すると2番目の月(来年2月)になります。 。

関連情報