【问题标题】:pm2 cron running automatically on startpm2 cron 在启动时自动运行
【发布时间】:2020-01-01 21:43:07
【问题描述】:

我正在尝试使用 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

test-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 在启动时立即自动运行一次

【问题讨论】:

    标签: javascript node.js cron pm2


    【解决方案1】:

    正如 pm2 文档所说,“应用程序必须正在运行才能使 cron 功能正常工作”,所以当然,当你启动它时,你的东西会运行一次。 https://pm2.keymetrics.io/docs/usage/application-declaration/#control-flow

    该功能旨在重新启动已运行的程序,而不是定期运行现在未运行的程序。 PM2 是关于管理长期运行的流程。这不是关于定期启动一个短期运行的程序。对于您想要的,为什么不使用常规的 cron 作业?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-24
      • 2019-03-12
      • 1970-01-01
      • 2014-04-23
      • 2016-09-07
      • 2018-12-12
      • 1970-01-01
      • 2021-12-22
      相关资源
      最近更新 更多