如何用PM2每5秒运行JS脚本及延迟启动配置咨询
PM2 配置问题解决方案
先帮你厘清核心误区:你当前配置的restart_delay是用来控制进程崩溃后重启的间隔,完全不是定时重复执行脚本的参数——这就是为啥脚本运行频率远高于预期的原因。下面针对你的两个问题逐一解答:
问题1:如何配置让脚本每5秒运行一次?
要实现定时重复执行脚本,你需要用到PM2的cron_restart配置项,它支持秒级cron表达式(格式为秒 分 时 日 月 周)。
针对每个app配置,添加cron_restart: "*/5 * * * * *"就能让脚本每5秒自动重启执行一次。同时注意两点:
- 确保你的脚本是一次性执行任务(跑完就主动退出),这样PM2才会按cron规则重启它;如果脚本是常驻进程,这个配置不会生效。
- 建议去掉
watch: true,因为watch是监听文件变化触发重启,会和定时重启规则冲突,导致不必要的额外启动。
修改后的单个app配置示例:
{ name : "deploy", script : "deploy.js", cron_restart: "*/5 * * * * *", // 每5秒重启执行一次 instances: 1, cwd: '/usr/share/sails/scripts/', log_date_format: 'YYYY-MM-DD HH:mm Z', out_file: '/usr/share/sails/scripts/deploy.log', error_file: '/usr/share/sails/scripts/deploy.log', exec_mode: 'fork', env: { "NODE_ENV": "development", }, env_production : { "NODE_ENV": "production" } }
问题2:如何让脚本在pm2 start后延迟20秒启动?
直接在每个app的配置中添加delay_start参数即可,它的单位是毫秒,设置为20000就对应延迟20秒启动。
示例配置片段:
{ name : "deploy", script : "deploy.js", delay_start: 20000, // 延迟20秒启动 // 其他原有配置... }
如果你的脚本需要等待依赖服务就绪后再启动,还可以配合wait_ready: true和listen_timeout做更灵活的就绪检测,但单纯的启动延迟需求用delay_start就足够了。
内容的提问来源于stack exchange,提问作者Stepan Poperechnyi
相关产品推荐
相关产品推荐

