如何使用服务器上的调度程序自动运行我的节点 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 开发的节点应用程序