请问,pm2定时任务未能重启
发布于 7 年前 作者 idsaynever 5702 次浏览 来自 问答

描述: pm2来定时执行一个邮件发送程序,如果程序是通过process.exit来退出的,就无法重新启动。而如果是正常退出的则能定时启动 ecosystem.json配置如下:

{
  "apps": [{
      "name": "index",
      "script": "index.js",
      "error_file": "err.log",
      "out_file": "out.log",
      "merge_logs": true,
      "log_date_format": "YYYY-MM-DD HH:mm Z",
      "min_uptime": 100,
      "cron_restart": "* * * * *",
      "autorestart": false
    }
  ]
}
5 回复

pm2这个特性没有用过,如果不能解决的话,可以使用linux自带的crontab来定时执行任务,参考文档 http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/crontab.html

autorestart不应该设置为true才会自动重启吗

@imhered autorestart设置false同时设置cron是会自动启动的。内在机制不太清楚。 猜测process.exit会让pm2认为是主动退出,auto_restart则是针对程序出错的重启。 pm2的cron用于重启,为了释放内存之类的,而不是为了做定时任务。 改成程序里做定时了。

@fancylife 本来想既然有这个特性就直接用了…现在是用node的cron包,因为对linux不太熟悉就直接找个库来用了,有时间再学习下linux的命令

还是不要依赖pm2做特殊的事情, 比如ftp部署, 还有你这里的定时任务. 比如, 指不定哪天你们要上k8s了, 就不需要pm2了. 推荐你个库node-schedule

回到顶部