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

Lot*_*her 1 php wget cron apache-2.2

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

我有一个应该在每天早上 4 点运行的 cron 工作。它击中了一个 php 脚本,该脚本执行一些日常数据分析,并在正常情况下运行一次(大约需要 2-3 分钟才能完成)并退出。它一直在工作,但最近它在服务器崩溃的时候运行得很糟糕。我调查并发现了以下内容。crontab 条目如下所示:

* 4 * * * /usr/bin/wget -q -O /dev/null 'http://123.456.78.90/index/thing?param=1'
Run Code Online (Sandbox Code Playgroud)

在我的日志文件中,我看到:

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)"
Run Code Online (Sandbox Code Playgroud)

为什么它会显示这样的重复运行?它没有达到某些东西所以它一直在尝试吗?感谢任何帮助,因为这种多次运行对我来说是新的。

Mic*_*ton 6

看起来您在一天中的第四个小时的每一分钟都在运行它。所以 60 份 wget 正在火热进行中。

* 4 * * * .....
Run Code Online (Sandbox Code Playgroud)

然后他们需要花多长时间。运行 60 个副本,这可能需要很长时间,这解释了为什么有些请求会在数小时后完成。

如果您真的希望它在凌晨 4 点只运行一次,请使用:

0 4 * * * .....
Run Code Online (Sandbox Code Playgroud)