2017-08-15 175 views
0

我每六小時有一個cron模式0 0 0/6 ? * *。我已經使用的NodeJS的cron執行cron作業,下面是我的代碼:每6小時cron模式不適用於Nodejs cron

var CronJob = require('cron').CronJob; 
    new CronJob('0 0 0/6 ? * *', function() { 
      console.log(new Date(), 'Every 6 hours'); 
      try { 
       // task to be executed 
      } catch (e) { 
       console.log(e); 
      } 
     }, function() {}, 
     true 
).start(); 

我我的程序的啓動過程中得到這個異常:

"stack": [ 
    "Error: Field (?) cannot be parsed", 
    " at Object._parseField (/home/ajit/git/test/BackEnd/node_modules/cron/lib/cron.js:344:11)", 
    " at Object._parse (/home/ajit/git/test/BackEnd/node_modules/cron/lib/cron.js:308:9)", 

我已經在這個網站選中此模式:http://www.cronmaker.com/,它說我的cron是有效的。我搜索了互聯網,我無法得到一個有效的6位數的克倫模式沒有?

+0

我的英語知識說:'?符號/標記不能被解析,並且我第一次看到它(所以修正是:'0 0 */6 * * *'順便說一句cronmaker可以用秒鐘來理解crons,所以可以說它沒問題(: – num8er

+3

[node-cron運行作業每3小時]可能重複(https://stackoverflow.com/questions/41597538/node-cron-run-job-every-3-hours) –

+0

我試過這種模式'0 0 */6 * * *'它不起作用 –

回答

1

Cron package documentation中所述,模式基於this specification。您不能在模式中使用?

僅僅通過一個*,同爲0/6更換?

var CronJob = require('cron').CronJob; 
    new CronJob('0 0 */6 * * *', function() { 
      console.log(new Date(), 'Every 6 hours'); 
      try { 
       // task to be executed 
      } catch (e) { 
       console.log(e); 
      } 
     }, function() {}, 
     true 
); 

編輯

基礎上documentation再次,似乎true標誌作爲第三傳遞參數立即開始工作,所以您不必調用start方法。

+0

我已經嘗試過,但它不工作。 –

+0

@AjitSoman你的意思是「它不工作」? – Erazihel

+0

我已將系統時間設置爲11:59 PM,但cron作業未觸發 –