cron是Unix/Linux系統工具,有很強的任務調度能力,Quartz的CronTrigger觸發器就是創建在cron的基礎上. 工具
一個cron Expression(克龍表達式)是由6或7個字段以空格分隔的字符串,每一個字段包含一些容許的值或容許的特殊字符(具體見下表), spa
字段 | 必要 | 允許值 | 允許的特殊字符 |
Seconds(秒) | 是 | 0-59 | -*/ |
Minutes(分) | 是 | 0-59 | -*/ |
Hours(時) | 是 | 0-23 | -*/ |
Day of month(日) | 是 | 1-31 | -*?/LW |
Month(月) | 是 | 1-12或JAN-DEC | -*/ |
Day of week(星期) orm |
是 | 1-7或SUN-SAT | -*?/L# |
Year(年) | 否 | 空值,1970-2099 | -*/ |
*:全部值,用來選擇某個字段的全部的值,例如'*'用在分鐘字段上,意味着每一分鐘(包含0-59全部值) ci
?:沒有具體的值,舉例說明,在每個月的10號出發任務,在Day of month(日)字段上設置值爲10,可是我不關心那一天星期幾,那麼在Day of week(星期)字段上設置'?'. 文檔
-:用來標識一個範圍,例如在Hours(時)字段上設置'10-12',意味着在10點,11點和12點. 字符串
,:用來標識附加的值,例如在Hours(時)字段上設置'10,12,14',意味着在10點,12點和14點. io
/:用來標識值的遞增,例如在Seconds(秒)字段上設置'0/15',意味着在第0秒,第15秒,第30面,第45秒.'/'左邊爲初始值,右邊爲遞增值. table
L:在日期和星期字段中,L有不一樣的含義,在日期字段中L標識月的最後一天,在星期字段中標識星期的最後一天(7或者SAT),另外,在星期字段中,L放置在一個數值後,後其餘含義,好比'6L',意味着一個月中最後一個星期五.在日期字段中'L'能夠用來標識最後一天的一個偏移量,例如'L-3',標識一個月的倒數第三天.(注意,這個時候'-'字符標識的不是一個範圍). 基礎
W:能夠理解爲工做日,使用在日期字段中,標識給定日期中,最近的工做日(星期-到星期五)觸發.好比'15W',若是15號是星期六,則在14號(星期五)觸發,若是15號是星期天,則在16號(星期一)觸發.若是15號是星期二,則在15號星期二觸發.若是你指定'1W',1號是星期六,那麼將在3號星期1觸發(是不會跨月找工做日的);'W'字符標識的是指定的一天,不能標識一個範圍.'W'和'L'字符結合使用,像這樣'LW',標識一個月中最後一個工做日. tab
#:用在星期字段,標識一個月中第幾個星期幾,例如'6#3'標識一個月中第3個星期五,'2#1'標識一個月中第一個星期一,'4#5'標識一個月中第5個星期3(等等,一個月中有可能有第5個星期三嗎,永遠不會,因此,這個是永遠也不會觸發的).
另外合法的字符,是不區分大小寫的,MON和mon是同樣的.
介紹內容來自Quartz的官方文檔.