ターン:
cronの式の使用
特定のルールによってはcron式は、単に日常のニーズのほとんどをカバーするために、完全ではない、その構文と例のいくつかを記録し、定期的なタスクのための時間を指定しました。
1.全体的な構造
クーロン式は、文字列は、各構文は二つのドメイン間のスペースで区切られた、6~7のフィールドに分割されます。
「Sドメインとドメイン日の時間領域月ドメインドメインのドメインドメイン週間」
その中でも、ドメインが省略年を表し、省略することができます。
2.各ドメインの範囲
ドメイン名 | 可能な値 | 好ましくは、シンボル(カラムが部分的にのみ使用されます) |
秒フィールド | 0〜59の整数 | * - 、/ |
フェンウィック | 0〜59の整数 | * - 、/ |
タイムドメイン | 0〜23の整数 | * - 、/ |
日域 | 1〜31の整数であり、 | * - 、/?L |
ドメイン月 | それとも1月12日〜12月まで1の整数 | * - 、/ |
周ドメイン | 1〜7日〜土のまたは整数 | * - 、/?L番号 |
ドメインで | これは、2099年から1970年の整数です。 | * - 、/ |
3.シンボルの意義
(1)*ドメインに一致するすべての値を表すことができます。
たとえば、「0013 * *?」毎日13ポイントの実装ことを示します。
(2)?cronの式で表示される必要があり、唯一のドメインまたはドメイン週間で一日に一度発生する可能性があり、不確実な値ではなく、限界値を表し、
それは金曜日3月4日には値であってもよいので、このよう毎週金曜日月を指定すると、そのドメイン上のすべての値と一致していません*とは異なります。
たとえば、「0056 *は?」、5時位置の各月の6日に関わらず、週の実行されることを示し毎週水曜日は5時に「?* 3 005」のいずれかいくつかの数字を行います。
(3) - マッチフィールドの範囲を表します。
30-15:30「は?01-5 * * 1」、1時間に1回行われる毎時間ごとに毎週日曜日1-5分であることを示したとえば、「?0309から15 * *」9毎日があることを示しかつて分。
(4)列挙値を示す図です。
例えば、「00 8,16,23?* 1,7」土曜日、日曜日8:00のそれぞれ、16時、各実行の23:00時ことを示しています。
(5)/開始時刻との時間間隔を表します。
たとえば、「* 3/5 00 *?」3時は、午後11時を一度に実行され、一回5時間、すなわち3時、午前8時00分、午前13時、18時に行われ、毎日が開始したことを示し
"* / 5 * * * *?" を実行するごとに5秒を意味し、 "0 * / 1 * * *?" 一回毎分を意味します。
(6)それだけドメイン#の周囲に使用することができ、数週間のデジタル表現の後ろに#、週の値が存在しない場合、実行されません。
例えば、「000?* 5#2」は、各月の第二木曜日ゼロ点の実装を示し、「15306?* 7#5」は、6時30分15秒を実行するために、各月の第五土曜日を示し月は第五土曜日に存在しない場合は、実行されません。
第1の円周領域符号前回値に数字で示さ土曜日、のみ日付フィールドの数日または数週間のフィールドの(7)Lドメインなしで使用する場合、月の最終日を表します。
例えば、 "0 0 23 L *は?"、23:00が実行され、各月の最終日を表し、 "0 0 23?* L" は、実行毎週土曜日23時00分を表し、 "0 0 23?* 3L" は先月を表し火曜日の23ポイントの実行。
4.いくつかの一般的な例(二重引用符ではありません)
意味 | 表現 |
5秒ごとに実行 | * / 5 * * * *? |
毎分一度実行 | 0 * / 1 * * *? |
1時は一日一回実行します | 0 0 1 * *? |
一日一回実行23時55分 | 0 55 23 * *? |
一度実行毎月午前23時の最後の日 | 0 0 23のL *? |
土曜日8:00実行時間 | 0 0 8?* L |
毎月最終金曜日、二時間おきに実行します | 0 0 * / 2?* 6L |
10:15の実行時に、各月の第3金曜日 | 0 15 10?* 5#3 |
14:05に午後2時から、日中1分ごとに実行 | 0 0-5 14 * *? |
実行するために、毎日10:15で月曜日から金曜日までに彼女を言いました | 0 15 10 ? * 2-6 |
每个月的最后一个星期五上午10:15执行 | 0 15 10 ? * 6L |
每天上午10点,下午2点,4点执行一次 | 0 0 10,14,16 * * ? |
朝九晚五工作时间内每半小时执行一次 | 0 0/30 9-17 * * ? |
每个星期三中午12点执行一次 | 0 0 12 ? * 4 |
每年三月的星期三的下午2:10和2:44各执行一次 | 0 10,44 14 ? 3 4 |
每月的第三个星期五上午10:15执行一次 | 0 15 10 ? * 6#3 |
每月一日凌晨2点30执行一次 | 0 30 2 1 * ? |
每分钟的第10秒与第20秒都会执行 | 10,20 * * * * ? |
每月的第2个星期的周5,凌晨执行 | 0 0 0 ? * 6#2 |
cron表达式通过特定的规则指定时间,用于定时任务,本文简单记录它的部分语法和实例,并不完全,能覆盖日常大部分需求。
1. 整体结构
cron表达式是一个字符串,分为6或7个域,每两个域之间用空格分隔,其语法格式为:
"秒域 分域 时域 日域 月域 周域 年域"
其中,年域可以省略,省略时表示每年。
2. 每个域的取值范围
域名 | 可取值 | 可取符号(仅列部分常用) |
秒域 | 0~59的整数 | * - , / |
分域 | 0~59的整数 | * - , / |
时域 | 0~23的整数 | * - , / |
日域 | 1~31的整数 | * - , / ? L |
月域 | 1~12的整数或JAN~DEC | * - , / |
周域 | 1~7的整数或SUN~SAT | * - , / ? L # |
年域 | 1970~2099的整数 | * - , / |
3. 符号的意义
(1)* 表示可以匹配该域的所有值;
例如,"0 0 13 * * ?"表示每天的13点执行一次。
(2)?在cron表达式中必须出现且只能出现1次,用在日域或周域上,表示不确定值、不限制值;
它与*的区别是,并不能匹配到该域上的所有值,例如指定了3月份每个周五,那么3月份的周五可能只有4个值;
例如,"0 0 5 6 * ?"表示每个月6日5点钟执行而无论周几,"0 0 5 ? * 3"表示每个周三5点钟执行而无论是几号。
(3)- 表示匹配该域上的一个范围;
例如,"0 30 9-15 ? * *"表示每天的9:30-15:30每小时执行一次,"0 1-5 * ? * 1"表示每周日每个小时的1-5分钟每分钟执行一次。
(4), 表示枚举值;
例如,"0 0 8,16,23 ? * 1,7"表示每个周六日的8点、16点、23点各执行一次。
(5)/ 表示起始时间和间隔时间;
例如,"0 0 3/5 * * ?"表示每天3点开始执行,每隔5个小时执行一次,即3点、8点、13点、18点、23点各执行一次,
"*/5 * * * * ?"表示每隔5秒钟执行一次,"0 */1 * * * ?"表示每隔1分钟执行一次。
(6)# 只能用于周域上,#后面的数字表示第几周,如果不存在这个周的值,则不执行;
例如,"0 0 0 ? * 5#2"表示每个月第2个周四零点执行,"15 30 6 ? * 7#5"表示每个月第5个周六6:30:15执行,如果某个月不存在第5个周六,则不执行。
(7)L 只能用于日域或周域,用于日域时表示当月最后一天,用于周域如果前面不加数字表示周六,加数字表示最后一个周值;
例如,"0 0 23 L * ?"表示每月最后一天的23点执行,"0 0 23 ? * L"表示每周六的23点执行,"0 0 23 ? * 3L"表示每月最后一个周二的23点执行。
4. 一些常见的实例(省略双引号)
意义 | 表达式 |
每隔5秒钟执行一次 | */5 * * * * ? |
每隔1分钟执行一次 | 0 */1 * * * ? |
每天1点执行一次 | 0 0 1 * * ? |
每天23点55分执行一次 | 0 55 23 * * ? |
每月最后一天23点执行一次 | 0 0 23 L * ? |
每周六8点执行一次 | 0 0 8 ? * L |
每月最后一个周五,每隔2小时执行一次 | 0 0 */2 ? * 6L |
每月的第三个星期五上午10:15执行一次 | 0 15 10 ? * 5#3 |
在每天下午2点到下午2:05期间的每1分钟执行 | 0 0-5 14 * * ? |
表示周一到周五每天上午10:15执行 | 0 15 10 ? * 2-6 |
每个月的最后一个星期五上午10:15执行 | 0 15 10 ? * 6L |
每天上午10点,下午2点,4点执行一次 | 0 0 10,14,16 * * ? |
朝九晚五工作时间内每半小时执行一次 | 0 0/30 9-17 * * ? |
每个星期三中午12点执行一次 | 0 0 12 ? * 4 |
每年三月的星期三的下午2:10和2:44各执行一次 | 0 10,44 14 ? 3 4 |
每月的第三个星期五上午10:15执行一次 | 0 15 10 ? * 6#3 |
每月一日凌晨2点30执行一次 | 0 30 2 1 * ? |
每分钟的第10秒与第20秒都会执行 | 10,20 * * * * ? |
每月的第2个星期的周5,凌晨执行 | 0 0 0 ? * 6#2 |