如何设置时间表在特定时间运行特定文件?

时间:2019-04-03 07:53:39

标签: javascript node.js node-cron node-schedule

我想尝试每天上午10点在命令提示符下运行此文件,但是此代码似乎不起作用。

const schedule = require("node-schedule");
var dailyJob = schedule.scheduleJob("0 0 10 * *", function() {
   console.log("Its connecting to database....");
});
dailyJob.start();

2 个答案:

答案 0 :(得分:0)

您必须在后台运行脚本或将其作为服务。

第1步:制作时间表脚本

many packages个用于调度,大多数基于cron。

这是带有cron软件包的示例,

var CronJob = require('cron').CronJob;
new CronJob('* * * * * *', function() {
  console.log('You will see this message every second', Date.now());
}, null, true, 'America/Los_Angeles');

运行此命令时,它每秒记录一次新行吗?

enter image description here

太好了!

第2步:使其在后台运行

那么如何在后台或作为服务运行它?这里也有很多选项,foreverpm2systemctl等。我将使用pm2

检查并安装pm2

npm i -g pm2

启动要在后台运行的脚本,

pm2 start index.js --name=run-every-second

检查日志,

pm2 logs run-every-second

它将继续在后台运行

enter image description here

您甚至可以使它在启动时运行,等等,

pm2 startup
pm2 save

和平!

答案 1 :(得分:0)

您似乎误解了调度程序的工作方式。调度程序仅在脚本运行时才起作用。如果停止脚本,则调度程序将无法工作。因此,如果您的脚本不在上午10点运行,它将无法执行您的功能。

如果要在不运行脚本的情况下执行脚本,则需要在系统中注册cronjob。

对于Linux,您创建一个script.js文件,然后调用crontab -e在此行添加cronjob:

0 10 * * * node /path/to/script.js

这将每天上午10点运行您的脚本。有关更多信息,请参见this wiki