如何使用服务器上的调度程序自动运行我的节点 js 脚本

Posted

技术标签:

【中文标题】如何使用服务器上的调度程序自动运行我的节点 js 脚本【英文标题】:How can I run my node js script automatically using scheduler on server 【发布时间】:2018-07-30 20:06:32 【问题描述】:

我使用 express 环境创建了一个 nodejs 文件,并使用 nodemon 在服务器上运行该文件。目前我必须向接口发出命令以在 nodemon 上运行特定文件,但我目前需要安排任务在一天内多次自动在服务器上运行该文件。

我的文件在终端上执行如下::

nodemon example_api.js

输出终端:

    root@*********:/var/www/example project# nodemon example_api.js
[nodemon] ##.##.#####
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node api.js`
Listening on port 8080

注意:我目前正在使用 windows 的 Mobaxterm 终端上运行 node js,但我的文件将在具有 linux 界面的服务器上运行

【问题讨论】:

【参考方案1】:

1.如果您想连续运行节点进程并且只想运行特定任务:

使用node-schedule 或node-cron 包在所需的时间或间隔运行您的代码块。

i.node-schedule

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

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

ii.node-cron

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

cron.schedule('*/30 * * * *', function()
  console.log('The answer to life, the universe, and everything!');
);

2。如果您只想运行单节点脚本:

您可以使用 Linux crontab 在所需时间执行您的脚本

crontab -e

并添加以下条目

*/30 * * * * /usr/local/bin/node /home/ridham/example/script.js

这将每 30 分钟执行一次/home/ridham/example/script.js。并始终在此处提供完整的合格路径。

您必须在以下任何一项中提供 crontime。你可以了解 crontime here

【讨论】:

【参考方案2】:

对于一个简单的实现 - 你可以像这样使用setInterval

setInterval(() => 
    // do something every 5 seconds
, 5000);

但如果您想要类似 cron 的东西,那么您可能想要使用 node-cron 或 node-schedule。

您还可以使用 AWS CloudWatch 等提供商。 AWS CloudWatch 允许您在 cron 上运行 AWS Lambda 函数。

【讨论】:

以上是关于如何使用服务器上的调度程序自动运行我的节点 js 脚本的主要内容,如果未能解决你的问题,请参考以下文章

Kubernetes 调度均衡器 Descheduler 使用

如何在 Azure 应用服务上运行使用 ts-node 开发的节点应用程序

如何在 AWS 上的 Amazon Linux AMI 中自动启动 node.js 应用程序?

如何让 EC2 上的 Node.js 服务器永远运行?

如何指定pod的运行节点?

在 Windows Server 启动时自动运行程序