我正在Hangfire的ASP.NET Core中使用Cron (recurring) Jobs,我需要创建一个从给定开始日期开始每三个月运行的作业。
因此,如果开始日期为2019年11月15日,则应将其运行于2019年11月15日,2020年2月15日,2020年5月15日等等。
我需要它每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日开始每三个月运行一次,并使其永远运行下去?
答案 0 :(得分:1)
cron中的month字段取1到12之间的数字;根据所使用的cron实现,您可以为month字段使用明确的列表:
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日进行比较;如果大于该值,则运行命令。
答案 1 :(得分:0)