Apache-2.2
cron作業反復執行,為什麼?
為什麼這個 cron 作業會隨著時間的推移重複執行,我能做些什麼來阻止它?
我有一個 cron 作業,應該每天早上 4 點執行。它命中一個執行一些日常數據分析的 php 腳本,在正常情況下執行一次(大約需要 2-3 分鐘才能完成)並退出。它一直在工作,但最近它在伺服器崩潰時執行得非常糟糕。我調查並發現以下內容。crontab 條目如下所示:
* 4 * * * /usr/bin/wget -q -O /dev/null 'http://123.456.78.90/index/thing?param=1'
在我的日誌文件中,我看到:
123.456.78.90 - - [28/Nov/2012:04:00:01 -0800] "GET /index/thing?param=1 HTTP/1.0" 200 4181 "-" "Wget/1.12 (linux-gnu)" 123.456.78.90 - - [28/Nov/2012:04:01:01 -0800] "GET /index/thing?param=1 HTTP/1.0" 200 4181 "-" "Wget/1.12 (linux-gnu)" 123.456.78.90 - - [28/Nov/2012:04:02:01 -0800] "GET /index/thing?param=1 HTTP/1.0" 200 4181 "-" "Wget/1.12 (linux-gnu)" // and then later it ends with (note that it isn't trying every minute now) 123.456.78.90 - - [28/Nov/2012:05:28:09 -0800] "GET /index/thing?param=1 HTTP/1.0" 200 4182 "-" "Wget/1.12 (linux-gnu)" 123.456.78.90 - - [28/Nov/2012:05:29:36 -0800] "GET /index/thing?param=1 HTTP/1.0" 200 4182 "-" "Wget/1.12 (linux-gnu)" 123.456.78.90 - - [28/Nov/2012:05:29:00 -0800] "GET /index/thing?param=1 HTTP/1.0" 200 4182 "-" "Wget/1.12 (linux-gnu)" 123.456.78.90 - - [28/Nov/2012:06:06:51 -0800] "GET /index/thing?param=1 HTTP/1.0" 200 4181 "-" "Wget/1.12 (linux-gnu)" 123.456.78.90 - - [28/Nov/2012:06:06:53 -0800] "GET /index/thing?param=1 HTTP/1.0" 200 4181 "-" "Wget/1.12 (linux-gnu)"
為什麼它會顯示這樣的重複執行?它是不是沒有達到目標,所以它一直在嘗試?感謝任何幫助,因為這個多次執行的東西對我來說是新的。
看起來您每天第四個小時的每一分鐘都在執行它。因此,60 個 wget 副本正在啟動。
* 4 * * * .....
然後他們需要花費多長時間。執行 60 個副本,這可能需要相當長的時間,這解釋了為什麼一些請求會在幾個小時後完成。
如果您真的希望它僅在凌晨 4 點執行一次,請使用:
0 4 * * * .....
如果您希望 wget 每天凌晨 4 點執行,我建議您將 cron 作業更改為如下所示:
0 4 * * * /usr/bin/wget -q -O /dev/null 'http://123.456.78.90/index/thing?param=1'
http://www.adminschoice.com/crontab-quick-reference
我建議先解決這個問題,然後如果您仍然看到問題,請報告。謝謝。