可能重复:
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
定义了星期日?
感谢您提前帮助。
答案 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
每个星期天都会运行,但没有办法说“只有第一个星期天”,所以这将在每个星期天运行。但是,你可以修改你的脚本以检查它正在运行的星期日,如果它不是第一个星期日就退出。