2012-03-13 99 views
7

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

为每个“计划”存储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的问题在于它每次都将重现重置到每月的第一天。例如,如果我每三天在第29天开始重复,则下一次出现将是下个月的第一天。

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

回答

1

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

01是周日和周一,和/2是 '隔日'

编辑:

经过对cron的更多研究之后,以上是不正确的因为se /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,我想不出设置每隔一周的场景的方法。

+1

我试过了,每天都有复发,从星期天开始。 如果我尝试0 0 * * 0/2,它会让我每个星期天和每两天重复一次 – 2012-03-14 08:00:18