You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Crontab实现PM2集群进程零宕机定时重载?

问题原因
  • 你最初使用sudo pm2 start app.json启动应用,对应PM2实例归属root用户,普通用户执行pm2命令时访问的是当前用户名下的PM2进程池,自然找不到目标集群进程。
  • 重载时直接指定配置文件偶发的进程ID匹配误差,直接调用应用名可规避该问题。
解决方案

方案1:使用root用户的crontab配置(推荐)

  1. 执行sudo crontab -e进入root用户的定时任务编辑界面
  2. 替换原有规则为以下内容,添加--wait-ready参数适配你配置里的就绪等待逻辑,确保新进程完全启动后再销毁旧进程,实现真正零宕机:
0 * * * * /usr/local/bin/pm2 reload autocosts.prod --wait-ready > /var/log/pm2/app.cron.log 2>&1
  1. 保存退出即可生效。

方案2:在普通用户crontab中配置

  1. 执行sudo visudo编辑权限配置,添加以下规则(替换your_user为实际用户名),实现免密执行pm2命令:
your_user ALL=(ALL) NOPASSWD: /usr/local/bin/pm2
  1. 执行crontab -e进入当前用户的定时任务编辑界面,替换原有规则为以下内容,显式指定root用户的PM2家目录避免进程识别失败:
0 * * * * sudo PM2_HOME=/root/.pm2 /usr/local/bin/pm2 reload autocosts.prod --wait-ready > /var/log/pm2/app.cron.log 2>&1
  1. 保存退出生效。
验证方法

配置完成后先手动执行一遍定时任务中的完整命令,执行后运行sudo pm2 status查看集群进程的重启时间是否更新,访问业务接口确认无服务中断即可。

内容的提问来源于stack exchange,提问作者João Pimentel Ferreira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:45:02