2013-05-21 123 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(你的開始時間)()的方法提觸發的起始時間這個啓動時間將隱含告訴石英當觸發將開始進入效果

相關問題