我正在使用 Hangfire在 ASP.NET Core 中用于 Cron (recurring) Jobs ,并且我需要创建一个从给定开始日期开始每三个月运行一次的作业。
因此,如果开始日期是 15-Nov-2019,它应该在 15-Nov-2019、15-Feb-2020、15-May-2020 等等运行。
我需要它每 3 个月永远运行一次。
所以我为此尝试了以下 cron 表达式:“0 0 15 11/3?”或“0 0 15 11/3 *”
但是在 this translating site 上测试之后,它告诉我它将在以下日期运行:
2019-11-15
2020-11-15
2021-11-15
2022-11-15
2023-11-15
那么,如果这是真的,那么如何让它从 2019 年 11 月 15 日开始每三个月运行一次,并一直运行下去?
最佳答案
cron中的月份字段取1到12之间的数字;根据使用的 cron 实现,您可以为月份字段使用明确的列表:
0 0 15 2,5,8,11 *
或带步长的范围:
0 0 15 2-12/3 *
crontab.guru 似乎也支持单步值,但是 crontab man page没有提到这种风格,所以它可能会或可能不会工作:
0 0 15 2/3 *
如果您希望能够在首次运行前三个月以上进行设置,则必须手动检查日期;在 shell 中(使用 GNU date
),你会做这样的事情:
0 0 15 2-12/3 * [ $(date +%%s) -gt $(date -d '2019-11-01' +%%s) ] && yourcommand
这是将当前日期与 2019 年 11 月 1 日进行比较;如果大于该值,则运行该命令。
关于cron - 如何创建每 3 个月执行一次的 cron 作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58734849/