crontab用法疑云
crontab的教程里面,一般都說 */N 表示每隔N分鐘/小時執行一次。
偶爾的教程里會講到:這個N應該被60整除才行。
我在網上基本上沒有搜到,如果N不被60整除的時候,會是怎樣?
問題起因最開始在于:
個人有個crontab任務,希望設置成40分鐘執行一次。但是設置了*/40之后發現,任務總是會在整點和40分的時候執行。
查看了下任務設置,并沒有設置在整點執行。然而,整點執行之后,隔40分鐘之后執行這一點又是符合crontab設置的。
所以,奇怪之處在于,為何整點會執行?
重新設定了一個不會被整除的數:*/47。查看任務,每次執行時打個log。發現:在整點和47分的時候都會執行。
聯想到crontab任務的執行標準,是每分鐘判斷一次某個任務是否應該被執行,那么,crontab的判斷標準應該如下:
1. 每分鐘執行一次,判斷任務是否應該執行;
2. 判斷標準為:當前分鐘數除以設置分鐘數,余數為0則可以執行。
這樣,設置為*/40或*/47的時候,在整點時刻(分鐘數為00),除以設置分鐘數(40和47),余數為0,故均會被執行。
由此可見,某些教程里說的,“設置的N應該被60整除才行”的意思是:如果N能被60整除,則會相當于每隔N分鐘執行一次,一個小時正好執行60/N次;如果N不能被60整除,則在能整除和整點(除完余數為0)的時候都會執行。
下面為測試文件,設定為*/23分鐘執行。
?75 ==> t3 <==
?76 Thu Jan 15 10:46:01 CST 2015
?77 Thu Jan 15 11:00:01 CST 2015
?78 Thu Jan 15 11:23:01 CST 2015
?79 Thu Jan 15 11:46:01 CST 2015
?80 Thu Jan 15 12:00:01 CST 2015
?81 Thu Jan 15 12:23:01 CST 2015
?82 Thu Jan 15 12:46:01 CST 2015
?83 Thu Jan 15 13:00:01 CST 2015
?84 Thu Jan 15 13:23:01 CST 2015
?85 Thu Jan 15 13:46:01 CST 2015
總結
以上是生活随笔為你收集整理的crontab用法疑云的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中strip()的陷阱
- 下一篇: ubuntu 12.04 联想think