2013-05-21 99 views
1

我想在某个开始时间后每小时运行一次cron作业。目前我的cron作业表达Cron Expression - 在开始时间后每小时运行一次

cronExpression = seconds + " " + minutes + " " + hours +"/1" + " " + " * * ? *" ; 

(秒,分,时由用户选择传递)

的作业开始在正确的时间和运行,每隔一小时,直到午夜,但随后停止,直到一小时在第二天,然后恢复。我如何才能让工作连续运行,而不是在午夜停下来?

我明白我可以表达改变

cronExpression = seconds + " " + minutes + " " * * * ? *" ; 

但那么它不会考虑开始时间。它将在每小时运行一次。

由于提前, 丰富

+0

多久。是要运行的作业吗? – suspectus

+0

我希望作业能够每小时运行一次,直到用户停止作业 – rich

回答

3

你的意思是你想要的工作,开始在给定的时间,然后再运行一次,每小时下去吗?如果是这样,我不认为cron表达是正确的方法。

如果您正在使用调度程序,则应该直接启动作业并在给定的时间间隔内永远运行。例如,这里是从石英调度文档片段为JobBuilder

 JobDetail job = newJob(MyJob.class) 
     .withIdentity("myJob") 
     .build(); 

    Trigger trigger = newTrigger() 
     .withIdentity(triggerKey("myTrigger", "myTriggerGroup")) 
     .withSchedule(simpleSchedule() 
      .withIntervalInHours(1) 
      .repeatForever()) 
     .startAt(futureDate(10, MINUTES)) 
     .build(); 

    scheduler.scheduleJob(job, trigger); 
+0

或使用SimpleTrigger – darrenmc

0

运行的包装,其如果当前时间是你的开始时间后运行你的工作每隔一小时。

例如,

case $(date +%H) in 
    09 |1[0-6]) pingcheck ;; 
esac 

将运行pingcheck(不管它是什么:-) 09:00至16时59分之间。

0

使用自己的表达

cronExpression =秒+ “” +分钟+ “” * * *? *”;

与startAt(你的开始时间)()的方法提触发的起始时间这个启动时间将隐含告诉石英当触发将开始进入效果

相关问题