如何创建每 3 个月执行一次的 cron 作业?

How to create cron job that is executing every 3 months?

我正在使用 Hangfire in ASP.NET Core for 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 日起每三个月 运行 如上所述,并永远保持 运行ning?

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 日进行比较;如果大于,则命令为运行.

简单的解决方案是使用以下命令:

0 0 15 */3 *

很直接forward.Here的输出让你满意来自crontab.guru网站 output of cron job