cron表達式的用法


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM