在给定时间执行不同的nodejs脚本
Execute different nodejs scripts at a given time
我正在寻找一个很好的解决方案,在 Ubuntu 上的服务器 运行 上的给定时间,不同的 javascript 文件与 nodejs 着火。
我有大约 10 个不同的脚本,每个脚本每天应该触发 15 次!我的第一种方法是使用 at 但这对于这么多事件来说真的很混乱。
现在我考虑在建议的 SO 上使用 Node-Schedule what some of you guys here,但我不确定这是否是完成我的任务的最佳解决方案...
如果 Node-Schedule 仍然是最好的方法 - 您会使用什么结构?
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;
});
似乎没有那么干……;)
如果您需要每天 运行 您的脚本,这种基于日期的计划并不是最好的解决方案。 cron 样式调度更适合。
例如
var xd1 = schedule.scheduleJob('0 * * * *', function(){
test.js;
});
每小时 运行 您的函数(0:00、1:00、2:00 等 = 一天 24 次)。
和
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;
});
我不会为了安排另一个节点程序而创建节点程序。使用普通的 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
我正在寻找一个很好的解决方案,在 Ubuntu 上的服务器 运行 上的给定时间,不同的 javascript 文件与 nodejs 着火。
我有大约 10 个不同的脚本,每个脚本每天应该触发 15 次!我的第一种方法是使用 at 但这对于这么多事件来说真的很混乱。
现在我考虑在建议的 SO 上使用 Node-Schedule what some of you guys here,但我不确定这是否是完成我的任务的最佳解决方案...
如果 Node-Schedule 仍然是最好的方法 - 您会使用什么结构?
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;
});
似乎没有那么干……;)
如果您需要每天 运行 您的脚本,这种基于日期的计划并不是最好的解决方案。 cron 样式调度更适合。
例如
var xd1 = schedule.scheduleJob('0 * * * *', function(){
test.js;
});
每小时 运行 您的函数(0:00、1:00、2:00 等 = 一天 24 次)。
和
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;
});
我不会为了安排另一个节点程序而创建节点程序。使用普通的 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