可能是重复问题:
cron : 如何安排每月第一个星期日运行
我想在每个月的第一个星期日上午7点执行一个php脚本。 我在服务器的crontab中输入了以下行。
0 7 1-7 * 0 user /path/to/script.php
今天我发现脚本在周三早上运行了。这是怎么回事?我以为最后一个0
表示星期天?
提前感谢您的帮助。
可能是重复问题:
cron : 如何安排每月第一个星期日运行
我想在每个月的第一个星期日上午7点执行一个php脚本。 我在服务器的crontab中输入了以下行。
0 7 1-7 * 0 user /path/to/script.php
今天我发现脚本在周三早上运行了。这是怎么回事?我以为最后一个0
表示星期天?
提前感谢您的帮助。
来自man页面的内容:
当分钟、小时和年份月份字段与当前时间匹配,且两个日期字段(日期或星期几)中至少有一个与当前时间匹配时(请参见“注意”),命令将由cron(8)执行。
然后:
注意:可以通过两个字段指定命令执行的日期——月份日期和星期几。如果两个字段都受限制(即不是*),则命令将在任何一个字段与当前时间匹配时运行。例如,“30 4 1,15 * 5”将导致命令在每月的第一天和第15天以及每个星期五早上4:30运行。
换句话说,您的脚本在1日到7日以及任何星期日运行。
第三个和第五个字段不能像你想象的那样一起使用。
你需要将第五个字段设置为 *,并修改你的php脚本,在继续之前检查当前是否是星期天。
您的 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
这个脚本将在每个星期日运行,但是没有方法可以只运行“第一个星期日”,因此它会在每个星期日运行。不过,您可以修改脚本以检查它正在运行的星期日,并在不是第一个星期日时退出。
0 9 1-7 * 1 *每月第一个星期一,上午9点
”,但这对于任何通用的Unix系统都没有什么帮助。 - jwadsack