2015-10-20 59 views
1

我正在尋找一個很好的解決方案,在運行在Ubuntu上的服務器上給定時間使用nodejs激發不同的javascript文件。在給定的時間執行不同的nodejs腳本

我有大約10個不同的腳本,每個應該每天發射15次!我的第一個方法是使用at,但這會讓事情變得非常混亂。

現在我想過用什麼Node-Schedule一些你們here上SO建議,但我不知道這是我的任務,最好的解決辦法...

如果節點計劃仍然應該是最好的方法 - 你會用什麼結構?

var schedule = require('node-schedule'); 
var d1 = new Date(2015, 10, 20, 18, 55, 0); 
var d2 = new Date(2015, 10, 20, 18, 58, 0); 

var xd1 = schedule.scheduleJob(d1, function(){ 
    test.js; 
}); 

var xd2 = schedule.scheduleJob(d2, function(){ 
    test.js; 
}); 

不似乎幹......;)

+0

這是cron是專門用來處理 – tkone

+0

我最終使用純粹的克隆工作得很好! –

回答

1

我不會創建一個節點程序,而只需安排另一個節點計劃。使用普通的cron。

如果你可以運行你的工作,每天16次,而不是15倍,這將是每90分鐘,你可以用這兩個cron的表達式安排:

' 0 0/3 * * * node test.js' 
'30 1/3 * * * node test.js' 

如果它必須是15倍,這個計劃有相當不錯的分佈(最多一次一小時,至少每隔小時,每天15次):

'0 0/2,1,9,17 * * * node test.js' 

任何理解這個時間表困難,使用this site。如果您需要15個調用是同樣的空間(每96分鐘),我怕你需要將它們分解成5個時間表:

0 0,8,16 * * * node test.js 
36 1,9,17 * * * node test.js 
12 3,11,19 * * * node test.js 
48 4,12,20 * * * node test.js 
24 6,14,22 * * * node test.js 
1

如果你需要每天的基礎上運行腳本,這種基於日期的調度是不是最好的解決方案。 cron風格的調度更適合。

例如

var xd1 = schedule.scheduleJob('0 * * * *', function(){ 
    test.js; 
}); 

將運行功能,每隔一小時(0:00,1:00,2:00等= 24,一日2次)。

而且

var xd1 = schedule.scheduleJob('0 */2 * * *', function(){ 
    test.js; 
}); 

將運行功能,每兩個小時(0:00,2:00,4:00等=每天12次)。

是一天15次難求嗎?你不能用cron語法很容易地定義這種間隔,而不用將它分成不同的cronjobs(=用相同的函數調用定義更多的作業)。

這個例子將每天跑15次,但它不是全天平衡:

var xd1 = schedule.scheduleJob('*/25 */5 * * *', function(){ 
    test.js; 
}); 
相關問題