cron作业反复运行,为什么?

为什么这个cron作业会随着时间的推移重复执行,我能做些什么来阻止它呢?

我有一个应该在每天早晨4点运行的cron工作。 它碰到一个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)" 

为什么会显示这样的重复运行? 它没有达到什么,所以它不断尝试? 任何援助是赞赏,因为这个多次运行的事情对我来说是新的。

看起来你正在一天中的第四个小时每分钟运行一次。 所以wget的60个副本正在被激发。

 * 4 * * * ..... 

然后,他们采取无论多长时间。 随着60个副本的运行,这可能是相当长的一段时间,解释为什么一些请求几个小时后完成。

如果您确实希望在凌晨4点运行一次,请使用:

 0 4 * * * ..... 

如果你想让wget每天凌晨4点运行,我build议把你的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

如果您仍然看到问题,我build议先解决,然后再报告。 谢谢。

http://www.gnu.org/software/wget/manual/wget.html

Wget的devise是为了在慢速或不稳定的networking连接上保持健壮性。 如果下载由于networking问题而失败,它将继续重试直到整个文件被检索。 如果服务器支持重新计算,它将指示服务器从停止的地方继续下载。

我怀疑它是超时(默认是900秒),并重新尝试。