使用nodejs每1小时调度一次文件

eqzww0vc  于 2022-11-04  发布在  Node.js
关注(0)|答案(8)|浏览(207)

我想在Windows环境中使用node.js每隔1小时运行一次print语句。我使用了程序包node-schedule。
但是当我试着运行这个的时候,输出并不像预期的那样,我想我的时间表格式是错误的。
所以我尝试了下面的代码:

var schedule = require('node-schedule');

var j = schedule.scheduleJob('*/1 * * *', function(){
    console.log('The answer to life, the universe, and everything!');
});
vql8enpb

vql8enpb1#

var schedule = require('node-schedule');
var j = schedule.scheduleJob('* 1 * * *', function(){  // this for one hour
console.log('The answer to life, the universe, and everything!');
});

cron格式包括:


* *    *    *    *    *

┬    ┬    ┬    ┬    ┬    ┬
│    │    │    │    │    |
│    │    │    │    │    └ day of week (0 - 7) (0 or 7 is Sun)
│    │    │    │    └───── month (1 - 12)
│    │    │    └────────── day of month (1 - 31)
│    │    └─────────────── hour (0 - 23)
│    └──────────────────── minute (0 - 59)
└───────────────────────── second (0 - 59, OPTIONAL)

以下是链接:https://github.com/node-schedule/node-schedule

8i9zcol2

8i9zcol22#

为什么不能使用setInerval()

setInterval(function () {
   console.log('The answer to life, the universe, and everything!');
}, 1 * 60 * 60 * 1000); // 1 hour
plicqrtu

plicqrtu3#

您可以尝试以下操作:

const schedule = require('node-schedule');
const job = schedule.scheduleJob('1 * * * *', () => { // run every hour at minute 1
    console.log('The answer to life, the universe, and everything!');
});

更多示例:

  • 每隔2分钟:5 */2 * * *
  • 每隔2小时,当达到5分钟标记时:5 */2 * * *

您应该使用这个友好的工具来读取和验证配置。例如:

值得注意的是,并不是所有的cronjob库都支持相同的细粒度时间级别。

  • Linux crontab:在分钟级别(允许配置中有5 *)
  • 节点调度:在第二级(配置中允许6 *)
ekqde3dh

ekqde3dh4#

这将每隔1小时0分0秒运行一次(例如:在下午1点、2点、3点等执行):

var CronJob = require('cron').CronJob;
var job = new CronJob('0 0 */1 * * *', function() {
  console.log('The answer to life, the universe, and everything!');
});
job.start();

参考:https://www.npmjs.com/package/cron

uajslkp6

uajslkp65#

这将根据您的时区运行,例如,现在您的时间是12:30,您的调度程序将在01:00运行。请检查

brccelvz

brccelvz6#

你需要在cron风格上再加一个“*”。如果你想了解更多的话,他们确实有一个很好的README.md

const schedule = require('node-schedule');

const job = schedule.scheduleJob('* */1 * * *', function(){
  console.log('The answer to life, the universe, and everything!');
});

cron包含:


* *    *    *    *    *

┬    ┬    ┬    ┬    ┬    ┬
│    │    │    │    │    |
│    │    │    │    │    └ day of week (0 - 7) (0 or 7 is Sun)
│    │    │    │    └───── month (1 - 12)
│    │    │    └────────── day of month (1 - 31)
│    │    └─────────────── hour (0 - 23)
│    └──────────────────── minute (0 - 59)
└───────────────────────── second (0 - 59, OPTIONAL)

编辑

如果您希望在每小时的特定分钟运行一次,您也可以这样做,并将0与0-59之间的任何分钟进行切换:

const schedule = require('node-schedule');

const job = schedule.scheduleJob('0 * * * *', function(){
  console.log('The answer to life, the universe, and everything!');
});
w46czmvw

w46czmvw7#

当**“秒为零”“分钟为零”**,以及“任何小时”、“任何天”、“任何月”、“一周中的任何一天”时,此函数将运行。基本上,每小时运行一次。

schedule.scheduleJob("0 0 * * * *", function() {
   console.log('I run every hour');
}
qncylg1j

qncylg1j8#

它将在每小时0分0秒运行。

const job = schedule.scheduleJob('0 0 */1 * * *', function(fireDate){
  console.log('This job was supposed to run at ' + fireDate + ', but actually ran at ' + new Date());
});

相关问题