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

能否通过Node.js PM2实现Cron任务进程自动重启?

用PM2实现Cron任务自动重启(Cloudways + PHP环境)

完全可以用PM2实现Cron任务的自动重启,PM2自带的进程守护能力刚好能解决你的问题,针对Cloudways上的PHP MVC环境,按以下步骤操作即可:

1. 用PM2启动你的PHP Cron任务

假设你的Cron任务脚本绝对路径是 /home/master/apps/your-app/public/cron-job.php,直接通过PM2启动:

pm2 start php --name "cron-task" -- /home/master/apps/your-app/public/cron-job.php
  • --name "cron-task":给进程命名,方便后续查看和管理
  • 替换路径为你实际的PHP脚本位置(Cloudways应用文件默认存放在/home/master/apps/你的应用名称目录下)

2. 配置自动重启规则(可选但推荐)

PM2默认会在进程崩溃、退出码非0时自动重启,你也可以通过配置文件自定义规则。在应用根目录创建ecosystem.config.js:

module.exports = {
  apps : [{
    name: 'cron-task',
    script: 'php',
    args: '/home/master/apps/your-app/public/cron-job.php',
    autorestart: true, // 强制开启自动重启
    watch: false, // 不需要监听文件变化时设为false,避免不必要的重启
    max_memory_restart: '1G', // 可选:进程内存占用超过1G时自动重启
    env: {
      NODE_ENV: 'production'
    }
  }]
};

用配置文件启动进程:

pm2 start ecosystem.config.js

3. 验证自动重启效果

手动终止进程测试:

# 方式1:通过PM2停止
pm2 stop cron-task
# 方式2:直接杀死进程
pkill -f "php /home/master/apps/your-app/public/cron-job.php"

执行pm2 status查看进程状态,你会看到cron-task进程自动恢复为online状态。

4. 设置PM2开机自启(推荐)

Cloudways服务器重启后,确保PM2自动恢复你的Cron任务:

pm2 startup
# 执行后会生成系统服务,按提示输入服务器密码确认
pm2 save # 保存当前PM2进程列表,开机时自动加载

针对定时触发的Cron任务补充

如果你的任务是定时执行的单次脚本(比如每分钟/每小时运行一次),可以用PM2的cron_restart替代系统Cron,同时保证任务运行中崩溃时自动重试:
修改ecosystem.config.js:

module.exports = {
  apps : [{
    name: 'cron-task',
    script: 'php',
    args: '/home/master/apps/your-app/public/cron-job.php',
    cron_restart: '* * * * *', // 按系统Cron语法设置定时规则(示例为每分钟执行)
    autorestart: true, // 任务运行中崩溃时自动重启
    env: {
      NODE_ENV: 'production'
    }
  }]
};

内容的提问来源于stack exchange,提问作者robot Yu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 11:25:26