Apache-2.2

cron作業反復執行,為什麼?

  • November 28, 2012

為什麼這個 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

我建議先解決這個問題,然後如果您仍然看到問題,請報告。謝謝。

引用自:https://serverfault.com/questions/453112