簡體   English   中英

pm2 cron 在啟動時自動運行

[英]pm2 cron running automatically on start

我正在嘗試使用 pm2 在午夜運行 cron。

通過這種設置,我面臨着一個意想不到的場景,即一旦我開始這個過程,cron 就會被觸發一次。

有沒有一種方法可以配置它而無需驗證 cron 進程中的運行時間?

生態系統配置文件

 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 作業呢?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM