crontab每小時運行一次(轉)


https://blog.csdn.net/liu0808/article/details/80668705

先給出crontab的語法格式

 

對於網上很多給出的每小時定時任務寫法,可以說絕大多數都是錯誤的!比如對於下面的這種寫法:

00 *   * * *  #每隔一小時執行一次
00 */1 * * *  #與上面是相同的任務

這種是正確的嗎?對照最前面給出的語法格式來看,這個定時任務在0分、每小時、每天、每月、每星期執行,看起來似乎很合理啊?前一個小時的0分和后一個小時的0分不就是相隔一個小時嗎?這樣的話不就是每隔一個小時執行嗎?再仔細看看,好像有點不對勁,為什么是每小時的0分?如果我在11:55創建了定時任務,希望每小時執行一次,那么接下來這個定時任務是在12:55執行,還是在12:00執行?很顯然,它是每小時的0分執行,也就是在12:00執行。

似乎沒區別?那么請思考下,每隔3小時執行如何寫?

網上給出的寫法如下:

0 */3 * * * #錯誤的每隔3小時執行一次寫法

這種也是錯誤的寫法,這種能充分展示前面一小時執行一次帶來的迷惑感,這種寫法其實是每整3小時的0分執行一次。也就是說,它會在每天的3點、9點、12點...等3的整數倍時間點來執行,並不是真正意義上每隔3個小時執行,如同前面類似,如果你在11:56創建這種每3小時的定時任務,那么它會在12點就開始執行,而不是14:56執行。請看如下驗證:

11:56分創建上面所謂的“每3小時執行一次”的定時任務:

 

4分鍾后而不是3小時后,crontab執行了該定時任務:

 

事實上,對於這種 "0 */3 * * * " 這種分鍾時間點固定,小時按每小時或者每3小時的寫法,都是從1點開始算倍數,比如每一小時就是1點、2點、3點,而每2小時就是2點、4點、6點,每3小時就是3點、6點、9點等等,以此類推。

除此之外,網上還有人給出這種的每小時執行一次的定時任務寫法:

* */1 * * * #錯誤的每隔一小時執行一次,事實上每分鍾執行一次

這種比前面那種還不如,它壓根不是每小時執行,而是每分鍾執行!為什么?因為分鍾要求的是每分鍾執行,而小時卻要求每一個小時執行,這2個分明是沖突的時間策略。最終以分鍾為准,所以它是每分鍾執行一次。

 

真正的每隔一小時、每隔105分鍾執行的定時任務應該如何寫呢?如下:

*/60  * * * * #每60分鍾即每小時執行一次
*/105 * * * * #每105分鍾執行一次


免責聲明!

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



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