Cron 作业每 x 周和特定日期运行一次 [关闭]

Posted

技术标签:

【中文标题】Cron 作业每 x 周和特定日期运行一次 [关闭]【英文标题】:Cron job run every x weeks and on specific days [closed] 【发布时间】:2012-03-30 01:05:26 【问题描述】:

我想创建一个每 x 周和特定工作日运行的 cron 作业。 例如:每两周在每周日和周一的午夜运行一次。

为每个“计划”存储 cron 表达式,我使用 SQL Server 2008 中的ncrontab 函数来生成给定 cron 表达式的日期。

有表达吗?甚至是几个表达式的连接?

我尝试使用以下表达式,但它总是给出相同的月份数

0 0 1/14 * *

2012-01-01 00:00:00.000
2012-01-15 00:00:00.000
2012-01-29 00:00:00.000
2012-02-01 00:00:00.000
2012-02-15 00:00:00.000
2012-02-29 00:00:00.000

编辑: 我一直在寻找每 x 天/周的重复频率,而 cron 的主要问题是它每次都将重复频率重置为每月的第一天。 例如,如果我每 3 天在 29 日开始重复,则下一次将是下个月的第一天。

我忽略了下一个解决方案的 cron: http://www.codeproject.com/Articles/20343/Recurring-Date-Generator-with-Pattern-Coding

【问题讨论】:

【参考方案1】:

试试0 0 * * 0/2,1/2

01 是星期日和星期一,/2 是“每隔一个”

编辑:

经过对cron的更多研究,上面是不正确的,因为/2表示步骤(每隔一个值),所以0/2相当于0,2,4,6,而0/2,1/2相当于0,1,2,3,4,5,6,7,这就解释了原因你看到它被解释为一周中的每一天。

在上面的示例中,1/14 表示从本月 1 日开始,以 14 为增量,产生1,15,29

话虽如此,如果这是针对 *nix crontab 的,那么您可以通过 0 0 * * Sun,Mon check_if_should_run.sh && the_script_to_run.sh 之类的内容来更详细地了解日程安排。使用 Ncrontab,我想不出一种方法来设置每隔一周的场景。

【讨论】:

我试过了,从周日开始每天都有复发。如果我尝试 0 0 * * 0/2 ,它会让我每周日和每两天重复一次

以上是关于Cron 作业每 x 周和特定日期运行一次 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

每三天进行一次 Cron 作业

每分钟运行一次 cron 作业,但从特定时间开始

仅在特定时间每分钟运行一次 cron 作业?

如何在服务器上的特定小时内每分钟运行一次cron作业

每 5 分钟运行一次 Cron 作业,持续 10 秒

每分钟运行一次 PHP 脚本