web-dev-qa-db-ja.com

Crontabの曜日の構文

Crontabでは、Day of the Weekフィールドは0 - 6または1 -7から始まりますか?

私はこれについて矛盾する情報を見ています。ウィキペディアに0-6とあり、私が見た他のサイトは1-7です。

また、0または7を誤って使用した場合、どうなるでしょうか。つまり、クーロンはまだ実行されますか?

161
Marty Wallace

07は両方とも日曜日を表します、あなたが望むものを使うことができます、従って0-6または1-7を書くことは同じ結果になります。

また、@ Henrikが示唆しているように、数字をMONTHUなどの短縮された曜日名に置き換えることができます。

0 - Sun      Sunday
1 - Mon      Monday
2 - Tue      Tuesday
3 - Wed      Wednesday
4 - Thu      Thursday
5 - Fri      Friday
6 - Sat      Saturday
7 - Sun      Sunday

グラフィカルに

 ┌────────── minute (0 - 59)
 │ ┌──────── hour (0 - 23)
 │ │ ┌────── day of month (1 - 31)
 │ │ │ ┌──── month (1 - 12)
 │ │ │ │ ┌── day of week (0 - 6 => Sunday - Saturday, or
 │ │ │ │ │                1 - 7 => Monday - Sunday)
 ↓ ↓ ↓ ↓ ↓
 * * * * * command to be executed

最後に、日にちを指定したい場合は、日をカンマで区切ることができます。例えば、Sun,MON,THUは日曜日、木曜日は月曜日にのみコマンドを実行します。

詳しくは、 ウィキペディアのCronに関する記事 を参照してください。

305
fedorqui
    :-) Sunday    |    0  ->  Sun
                  |  
        Monday    |    1  ->  Mon
       Tuesday    |    2  ->  Tue
     Wednesday    |    3  ->  Wed
      Thursday    |    4  ->  Thu
        Friday    |    5  ->  Fri
      Saturday    |    6  ->  Sat
                  |  
    :-) Sunday    |    7  ->  Sun

あなたが上で見ることができるように、そして前に述べたように、数07は両方とも日曜日に割り当てられます。記載されている英語の曜日の短縮形もあり、これはcrontabでも使用できます。

数値または省略形の使用例

15 09 * * 5,6,0             command
15 09 * * 5,6,7             command
15 09 * * 5-7               command
15 09 * * Fri,Sat,Sun       command

4つの例はすべて同じことを行い、毎週金曜日、土曜日、日曜日の9.15時にコマンドを実行します。

詳細

日曜日に2つの数字07を持つことは、0で始まるまたは7で終わる平日の範囲を書くのに役立ちます。したがって、たとえば0-25-7のように、日曜日から始まる範囲、またはそれで終わる範囲を書くことができます(範囲は小さい数字で始まり、大きい数字で終わる必要があります)。省略形を使用して平日の範囲を定義することはできません。

92
Henrik

月曜日にはMon、火曜日にはTueなどの曜日名も使用できます。

7
Cyril Bouthors

Spring を使う:

  1. このジョブは毎週月曜日の午前10時から午後10時にで開始されます

    @Scheduled(cron = "0 0 10 * * MON")

  2. このジョブは毎月1日の午前10時から午前10時までにで始まります

    @Scheduled(cron = "0 0 10 1 1/1 ?")

0
Taras Melnyk