我正在使用node-schedule包来安排我的工作。我想在一天中的特定时间重新启动我的服务器,下面是代码:
var schedule = require('node-schedule');
/**
* This is used to restart the server after some interval
* we are using pm2 (https://github.com/Unitech/pm2) to run server as process
* when the server is closed, pm2 automatically restart the server
*/
var restartInterval='* 4,8,12,16,20,23 * * *';
var j = schedule.scheduleJob(restartInterval, function () {
console.log("stopping server!!!!!");
//Code to stop server
try {
process.exit(1);
} catch (err) {
console.log(err)
}
});
但调度程序行为不正常,当我在早上看到日志时,我注意到作业每分钟都在执行。我已经使用pm2在调度程序停止服务器时自动启动服务器。
我错过了什么吗?答案 0 :(得分:0)
以下是我认为的问题:
你的var restartInterval='* 4,8,12,16,20,23 * * *';
实际上是在给定时间的每一分钟执行工作,所以一旦例如它是12点,你的服务器将在12点关闭,重新启动,在12点01分再次关闭,等......
我的猜测是你的日志只显示给定时间内每分钟的停止重启。
如果您想特定小时,请使用以下语法:
var restartInterval='00 4,8,12,16,20,23 * * *';
答案 1 :(得分:0)
更好地使用更简单的指定日程表的格式,例如,您可以使用下面的约定而不是cron表达式,这更易于管理:
/ *每周日凌晨2:30 * /
运行cron.scheduleJob(**{hour: 2, minute: 30, dayOfWeek: 0}**, function(){
console.log('This runs at 2:30AM on every Sunday');
});
如果您有一个利基用例,还有其他模块用于安排。
这可以在MIT许可下使用。