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

标签 cron hangfire

我正在使用 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

my cron expression after testing it

那么,如果这是真的,那么如何让它从 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/

相关文章:

ant - "fork: Resource temporarily unavailable"是什么原因

c# - 使用 hang-fire 和 ASP.NET Core 发送每日摘要电子邮件

azure - .NET Core 应用程序中的 "Access to the path ' C :\\home\\site\\wwwroot\\dataModel. csv ' is denied.",部署在 Azure 中

c# - 在 C# 中重构这个静态类的最佳方法?

java - 何时使用 Cron Job 与 ScheduledExecutorService

python - 如何在/etc/cron.hourly中执行python脚本?

cron - 在 cronjob 的输出日志中添加新行

Hangfire 背景作业与时间表

asp.net-mvc - 为什么Hangfire需要验证才能查看仪表板

bash - 脚本输出覆盖旧数据而不是写入新行的输出文件