Crontab 运行不正确

Crontab 运行不正确

我有一项作业设置为按照以下 cron 计划运行

0,15,30,45 * 8-17 * 1-5

但是,该作业不是仅在周一至周五和每月 8 日至 17 日运行,而是每 15 分钟运行一次(包括周末和除 8 日至 17 日以外的其他日子)。我不确定问题是否出在数字范围上或其他地方。

答案1

man 5 crontab

命令执行的日期可以通过两个字段指定 - 月份日期和星期几。如果两个字段都受到限制(即不是 *),则当任一字段与当前时间匹配时,将运行命令。例如,“30 4 1,15 * 5”将导致命令在每个月 1 日和 15 日以及每个星期五的凌晨 4:30 运行。但是,可以通过向命令添加测试来实现所需的结果。

8-17因此,在您的情况下,该命令将在所有月份的日期执行。 mon-fri每周。

为了仅在每个月的mon-fri某一天运行作业8-17,我们需要添加一个测试:

*/15 * 8-17 * * /bin/bash -c '[[ $(/bin/date '+%u') =~ 1|2|3|4|5 ]]' && your_command

上述作业将在8-17每月的每 15 分钟运行一次,并通过测试检查日期是否在周一至周五之间[[ $(/bin/date '+%u') =~ 1|2|3|4|5 ]],如果是则your_command执行,否则不执行。

另外,由于您使用 15 分钟的间隔,*/15因此请使用逗号分隔范围。

相关内容