Crontab /在一个月的第一个周日运行cronjob

时间:2011-06-01 15:03:47

标签: php crontab

  

可能重复:
  cron : how to schedule to run first Sunday of every month

我想在每个月的第一个星期天早上7点执行一个php脚本。我在服务器crontab中输入了以下行。

0 7 1-7 * 0      user /path/to/script.php

今天我看到脚本确实在周三早上运行。怎么会发生这种情况?我认为最后一个0定义了星期日?

感谢您提前帮助。

3 个答案:

答案 0 :(得分:9)

从手册页:

  

当分钟,小时,cron(8)执行命令        和年份字段匹配当前时间,并且至少有一个        两天的字段(月中的某天或星期几)与当前字段匹配        时间(见下面的“注意”)。

以后:

  

注意:命令执行的日期可以由两个字段指定 -        每月的一天和一周的一天。如果两个字段都受到限制(即,是        不是*),当任一字段与当前字段匹配时,将运行该命令        时间。例如,``30 4 1,15 * 5''会导致命令运行        每个月的1号和15号凌晨4:30,加上每个星期五。

换句话说,您的脚本将在1日到7日以及任何星期日运行。

答案 1 :(得分:2)

字段3和5不能像你假设的那样一起工作。

您需要将字段5设置为*并修改您的php脚本,以检查当前日期是否为继续之前的星期日。

答案 2 :(得分:2)

你的cron规范出来了:

0 - run at minute 0
7 - run at hour 7
1-7 - run on days 1,2,3,4,5,6,7
* - all months
0 - day 0 of the week

我不相信您可以通过cron中提供的工具将其限制为仅限第一种类型。你可以试试

0 7 * * 0

每个星期天都会运行,但没有办法说“只有第一个星期天”,所以这将在每个星期天运行。但是,你可以修改你的脚本以检查它正在运行的星期日,如果它不是第一个星期日就退出。