1.Cron是什么,用來做什么的
根據百度百科的解釋:計劃任務,是任務在約定的時間執行已經計劃好的工作,這是表面的意思。在Linux中,我們經常用到 cron 服務器來完成這項工作。cron服務器可以根據配置文件約定的時間來執行特定的作務。
白話文解釋:cron就是用來設定任務執行頻次,任務根據設定執行頻次來執行任務,比如我設置晚上12點定時發郵件給給借款人,催他還款,那么執行發送郵件的任務就按照每天12點的頻次來執行任務。
2.Cron的格式
Cron表達式是一個字符串,字符串以5或6個空格隔開,分為6或7個域,每一個域代表一個含義,Cron有如下兩種語法格式:
Seconds Minutes Hours DayofMonth Month DayofWeek Year或
Seconds Minutes Hours DayofMonth Month DayofWeek
例子:
每一個域可出現的字符如下:
Seconds:可出現", - * /"四個字符,有效范圍為0-59的整數
Minutes:可出現", - * /"四個字符,有效范圍為0-59的整數
Hours:可出現", - * /"四個字符,有效范圍為0-23的整數
DayofMonth:可出現", - * / ? L W C"八個字符,有效范圍為0-31的整數
Month:可出現", - * /"四個字符,有效范圍為1-12的整數或JAN-DEc
DayofWeek:可出現", - * / ? L C #"四個字符,有效范圍為1-7的整數或SUN-SAT兩個范圍。1表示星期天,2表示星期一, 依次類推
Year:可出現", - * /"四個字符,有效范圍為1970-2099年
3.Cron 一些例子
0 0 10,14,16 * * ? 每天上午10點,下午2點,4點
0 0/30 9-17 * * ? 朝九晚五工作時間內每半小時
0 0 12 ? * WED 表示每個星期三中午12點
"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觸發
4.注意事項
?:只能用在DayofMonth和DayofWeek兩個域,就是當我們在設置了日,那么星期那里就得寫?,當我們設定了星期,日那個地方就要設定為?。這個道理其實很好理解,設定其中的任何一個另外一個其實已經確定了,這兩者有一定的聯系,通過其中的一個我們可以推算到另外一個值。