【问题标题】:Restart pm2 app every 12h with cron使用 cron 每 12 小时重启一次 pm2 应用程序
【发布时间】:2023-10-25 02:26:01
【问题描述】:

试过了,还是不行:

SHELL=/bin/bash
PATH=/usr/lib/node_modules/pm2/bin
* 0,12 * * * pm2 restart all

我做错了什么?

【问题讨论】:

  • 您正在从$PATH 中删除其他路径。相反,请说PATH=$PATH:/usr/lib/node_modules/pm2/bin。另外,你需要在pm2之前提到node的路径 --> */5 * * * * /root/.nvm/v0.11.9/bin/node /root/.nvm/v0.11.9/bin/pm2 restart all

标签: node.js cron crontab pm2


【解决方案1】:

不要重启,reload(零停机时间)

每天凌晨 4:30 重新加载 myApp

30 4 * * * /usr/local/bin/node /usr/local/bin/pm2 reload <myAppId> > /dev/null 2>&1

要检查 node 和 pm2 的完整路径,请执行 which nodewhich pm2&gt; /dev/null 2&gt;&amp;1 部分忽略了标准输出和标准错误。

【讨论】:

    【解决方案2】:

    在多种重启策略中,PM2可以通过选项--cron-restart基于cron格式重启应用

    每半夜重启应用:

    pm2 start app.js --cron-restart="0 0 * * *"
    

    欲了解更多信息,请查看文档:

    https://pm2.keymetrics.io/docs/usage/restart-strategies/#restart-at-cron-time

    【讨论】:

      【解决方案3】:

      使用 crontab -e 编辑 cron 并添加以下内容:

      0 */12 * * * /usr/bin/node /usr/bin/pm2 restart all

      对于日程安排,每 12 小时使用 0 */12 * * *,或者专门针对 0:00 和 12:00 使用 0 0,12 * * *。 (您的日程安排 * 0,12 * * * 将触发 0 小时和 12 小时的每一分钟、0:00、0:01、0:02...)

      对于命令,正如 fedorqui 所提到的,使用 node 的路径,后跟 pm2 的路径和 pm2 选项。使用which nodewhich pm2获取node和pm2的路径。

      【讨论】:

        最近更新 更多