javascript - pm2 cron 在启动时自动运行
问题描述
我正在尝试使用 pm2 在午夜运行 cron。
使用此设置,我面临一个意外情况,即一旦我启动该过程,就会触发一次 cron。
有没有一种方法可以配置它而无需验证 cron 进程中的运行时间?
生态系统.config.js
module.exports = {
apps: [
{
name: "server",
script: "server.js",
watch: false,
env: {
NODE_ENV: "production"
}
},
{
name: "test-cron",
script: "test-cron.js",
instances: 1,
exec_mode: "fork",
cron_restart: "0 0 * * *",
watch: false,
autorestart: false,
env: {
NODE_ENV: "production"
}
}
]
};
命令
pm2-runtime ecosystem.config.js
测试cron.js
console.log("CRON EXECUTED");
控制台输出:
> pm2-test@1.0.0 start /Users/sudhirshrestha/workspace/pm2-test
> pm2-runtime ecosystem.config.js
2019-08-28T22:54:44: PM2 log: Launching in no daemon mode
2019-08-28T22:54:44: PM2 log: App [server:0] starting in -fork mode-
2019-08-28T22:54:44: PM2 log: App [test-cron:1] starting in -fork mode-
2019-08-28T22:54:44: PM2 log: App [server:0] online
2019-08-28T22:54:44: PM2 log: App [test-cron:1] online
CRON EXECUTED
2019-08-28T22:54:49: PM2 log: App [test-cron:1] exited with code [0] via signal [SIGINT]
问题:Cron 在启动时立即自动运行一次
解决方案
正如 pm2 文档所说,“应用程序必须正在运行才能使 cron 功能正常工作”,所以当然,当你启动它时,你的东西会运行一次。 https://pm2.keymetrics.io/docs/usage/application-declaration/#control-flow
该功能旨在重新启动已经运行的程序,而不是定期运行现在未运行的程序。PM2 是关于管理长期运行的流程。这不是关于定期启动一个短期运行的程序。对于您想要的,为什么不使用常规的 cron 作业?
推荐阅读
- powershell-3.0 - powershell 3.0 没有管理员权限压缩文件
- winapi - 需要明确 _SID_AND_ATTRIBUTES_HASH
- javascript - 在 React 应用程序中使用 jQuery 关闭 Bootstrap 模态
- c# - SendGrid Restful API - 400 错误请求
- swiftui - watchOS 8 - SwiftUI 在图像周围添加额外的、不需要的空间
- python - 执行连接到 EKS 的 lambda 函数时出现 MasterNotFoundError
- c# - 我可以使用 Wix 自定义操作来确定是否安装引导程序包吗?
- google-docs-api - 复制 Google Doc 在共享驱动器中不起作用 (404)
- jenkins - MSBuild 无法在 jenkins Server 中构建 MSTest 项目
- cron - 如何在 Plesk 中安排远程文件下载?