-1

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

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

2 回答 2

2

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

第 1 步:制作日程安排脚本

许多用于调度的包,大多数是基于 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');

当你运行它时,它是否每秒记录一个新行?

在此处输入图像描述

伟大的!

第二步:让它在后台运行

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

过去安装pm2

npm i -g pm2

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

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

检查日志,

pm2 logs run-every-second

它将继续在后台运行,

在此处输入图像描述

你甚至可以让它在启动时运行等等使用,

pm2 startup
pm2 save

和平!

于 2019-04-03T15:49:26.007 回答
0

您似乎误解了调度程序的工作原理。只要您的脚本正在运行,调度程序就会工作。如果您停止脚本,调度程序将无法工作。所以如果你的脚本没有在上午 10 点运行,它就不会执行你的函数。

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

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

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

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

于 2019-04-04T15:25:39.230 回答