corn表达式
一. 概述
corn表達式用來表示定時任務的執行頻率和執行方式。
二. 使用方法:
1. 基本結構
corn表達式分為七個部分,用空格翻開,從左到右的分別為:秒(second) 分(minute) 時(hour) 日(dayofmonth) 月(month) 周(dayofweek) 年(year)。可取值如下表:
| 域 | 取值范圍 | 允許的特殊字符 |
| 秒(second) | 0-59 | -*/ |
| 分(minute) | 0-59 | -*/ |
| 時(hour) | 0-23 | -*/ |
| 日(dayofmonth) | 1-31 | -*/?LWC |
| 月(month) | 1-12或者JAN-DES | -*/ |
| 周(datofweek) | 1-7或者SUN-SAT | -*/?LC# |
| 年(year) | 1970-2099 | -*/ |
其中,年可以省略。
2. 特殊字符含義
“*”字符被用來指定所有的值。例如,要定義每天中午12點觸發,則corn表達式為:“0 0 12 * * ?*”。 “?”字符被用來指定不確定的值。例如,要定義“每周四中午12點觸發”,則corn表達式為:“0 0 12 ? * 5 * ”。因為我們無法確定每周四是幾號,所以“日”用?代替。 “-”字符被用來指定一個范圍。例如,要定義“每周一到周五中午12點觸發”,則corn表達式為:“0 0 12 ? * 2-6 *” “/”字符被用于指定增量。例如,“0/15”在秒域意思是每分鐘的0,15,30,45秒。“5/15”在分鐘域表示每小時的5,20,35,50。符號“*”在“/”前面(如:*/10)等價于0在“/”前面(如:0/10)。 “,”字符被用來指定另外的值。例如,要定義“每周一周四的中午12點觸發”,則corn表達式為:“0 0 12 ? * 2,5 *” L字符被用來表示dayofmonth和dayofweek域,但在兩個字段中的意思不同,例如,dayofmonth域中表示一個月的最后一天。如果在dayofweek域表示‘7’或者‘SAT’,如果在dayofweek域中前面加上數字,例如‘6L’就表示一個月的最后一個星期五。 字符“W”只允許日期域出現。這個字符用于指定日期的最近工作日。例如:如果你在日期域中寫 “15W”,表示:這個月15號最近的工作日。所以,如果15號是周六,則任務會在14號觸發。如果15好是周日,則任務會在周一也就是16號觸發。如果是在日期域填寫“1W”即使1號是周六,那么任務也只會在下周一,也就是3號觸發,“W”字符指定的最近工作日是不能夠跨月份的。字符“W”只能配合一個單獨的數值使用,不能夠是一個數字段,如:1-15W是錯誤的。“L”和“W”可以在日期域中聯合使用,LW表示這個月最后一周的工作日。 字符“#”只允許在星期域中出現。這個字符用于指定本月的某某天。例如:“6#3”表示本月第三周的星期五(6表示星期五,3表示第三周)。“2#1”表示本月第一周的星期一。“4#5”表示第五周的星期三。 字符“C”允許在日期域和星期域出現。這個字符依靠一個指定的“日歷”。也就是說這個表達式的值依賴于相關的“日歷”的計算結果,如果沒有“日歷”關聯,則等價于所有包含的“日歷”。如:日期域是“5C”表示關聯“日歷”中第一天,或者這個月開始的第一天的后5天。星期域是“1C”表示關聯“日歷”中第一天,或者星期的第一天的后1天,也就是周日的后一天(周一)。
3. 常用表達式
"0 0 12 * * ?" 每天中午12點觸發
"0 15 10 ? * *" 每天上午10:15觸發
"0 15 10 * * ?" 每天上午10:15觸發
"0 15 10 * * ? *" 每天上午10:15觸發
"0 15 10 * * ? 2005" 2005年的每天上午10:15觸發
"0 * 14 * * ?" 在每天下午2點到下午2:59期間的每1分鐘觸發
"0 0/5 14 * * ?" 在每天下午2點到下午2:55期間的每5分鐘觸發
"0 0/5 14,18 * * ?" 在每天下午2點到2:55期間和下午6點到6:55期間的每5分鐘觸發
"0 0-5 14 * * ?" 在每天下午2點到下午2:05期間的每1分鐘觸發
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44觸發
"0 15 10 ? * MON-FRI" 周一至周五的上午10:15觸發
"0 15 10 15 * ?" 每月15日上午10:15觸發
"0 15 10 L * ?" 每月最后一日的上午10:15觸發
"0 15 10 ? * 6L" 每月的最后一個星期五上午10:15觸發
"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一個星期五上午10:15觸發
"0 15 10 ? * 6#3" 每月的第三個星期五上午10:15觸發
總結
- 上一篇: USB中CDC-ECM的了解和配置
- 下一篇: KMS(2)