【问题标题】:PM2 cron running every secondPM2 cron 每秒运行一次
【发布时间】:2019-06-06 21:50:40
【问题描述】:

我使用 --cron 标志每小时运行一次作业。一旦我使用 pm2 deploy 进行部署,问题就出现了。我在日志中看到它每秒都在运行作业。

apps: [
    {
        name: "api",
        script: "./index.js",
        autorestart: true
    },
    {
        name: "cron",
        script: "./cron.js --cron '0 * * * *'"
    }
],

cron 语法似乎是正确的,我是否遗漏了其他内容?

【问题讨论】:

  • 脚本有什么作用?它有可能重新启动吗?如果你直接做pm2 start cron.js --cron "0 * * * *",它会起作用吗?如果cron.js 只是一个简单的类似console.log("hello"); 的脚本,它会起作用吗?
  • 我找到了解决方案,因为它是一个 cron 脚本,当出现错误时我以 process.exit(0) 或 process.exit(1) 结束它,这导致脚本重新启动,我添加了 --no-autorestart 标志,现在一切都很好。
  • @MiguelStevens 请添加您的答案并接受。你为我节省了无数小时的调试时间
  • @Mohathealmightycamel 已经有一段时间了,你只添加了 --no-autorestart 吗?或者还删除了 process.exit() 行?

标签: node.js digital-ocean pm2


【解决方案1】:

用pm2正确创建cronjob的方法是:

pm2 start index.js --no-autorestart --cron "*/15 * * * *" --name "My 15m cron job"

如果需要传递参数,那么:

pm2 start index.js --no-autorestart --cron "*/15 * * * *" --name "My 15m cron job" -- --cron-15m

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-26
    • 2011-03-20
    • 1970-01-01
    • 2018-03-22
    • 2018-02-18
    • 2015-03-05
    • 2021-07-28
    • 2018-10-26
    相关资源
    最近更新 更多