为什么这个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秒),并重新尝试。