当前位置: 首页 > news >正文

pm2如何执行脚本批量启动多个服务

在 PM2 中批量启动多个服务,可以通过以下几种高效方式实现,具体操作如下:


方法1:使用 ecosystem.config.js 配置文件(推荐)

步骤1:生成配置文件

在项目根目录运行以下命令,生成模板文件:

pm2 init simple

这会生成一个基础的 ecosystem.config.js 文件。

步骤2:配置多服务

编辑 ecosystem.config.js,定义多个应用的启动配置:

module.exports = {apps: [{name: "api-server",      // 服务1名称script: "./api/index.js",instances: 2,           // 启动2个实例env: { NODE_ENV: "production" }},{name: "worker-service", // 服务2名称script: "./worker/main.js",watch: true             // 文件变化自动重启},{name: "frontend",       // 服务3名称script: "serve",args: "-s build -p 3000"}]
};
步骤3:批量启动所有服务
pm2 start ecosystem.config.js
  • 效果:一键启动所有配置的服务。

  • 管理命令

    pm2 list              # 查看所有服务状态
    pm2 stop all          # 停止所有服务
    pm2 restart all       # 重启所有服务


方法2:通过 JSON 文件批量启动

步骤1:创建 apps.json 文件
[{"name": "service-1","script": "./service1.js","cwd": "/path/to/app1"},{"name": "service-2","script": "./service2.js","cwd": "/path/to/app2"}
]
步骤2:批量启动
pm2 start apps.json

方法3:命令行直接批量启动

单行命令启动多个服务
pm2 start app1.js app2.js app3.js --name="server1,server2,server3"
  • 参数说明

    • --name:为每个服务指定名称(逗号分隔,与脚本顺序对应)。

批量启动同一目录下的所有Node脚本
for file in /path/to/scripts/*.js; dopm2 start "$file" --name "$(basename "$file" .js)"
done

方法4:使用 PM2 模块(动态扩展)

安装 pm2-intercom 模块
pm2 install pm2-intercom
通过脚本动态启动服务
const pm2 = require('pm2');const services = [{ script: './serviceA.js', name: 'ServiceA' },{ script: './serviceB.js', name: 'ServiceB' }
];services.forEach(service => {pm2.start(service, (err) => {if (err) console.error(`Failed to start ${service.name}:`, err);});
});

管理技巧

  1. 批量操作命令

    pm2 restart all      # 重启所有
    pm2 stop all         # 停止所有
    pm2 delete all       # 删除所有

  2. 日志管理

    pm2 logs             # 查看所有日志
    pm2 flush            # 清空日志

  3. 开机自启

    pm2 save             # 保存当前服务列表
    pm2 startup          # 生成开机启动脚本

常见问题

Q1:如何确保服务按顺序启动?

在 ecosystem.config.js 中使用 autorestart: false 和依赖管理:

{name: "db-service",script: "./db.js",autorestart: false,wait_ready: true  // 等待进程发送"ready"信号
}

然后通过脚本控制启动顺序。

Q2:如何批量更新代码并重启?
git pull && pm2 restart all
Q3:如何监控多个服务的资源占用?
pm2 monit

通过以上方法,可以高效地批量管理多个Node.js服务。推荐使用 ecosystem.config.js,它提供了最灵活的配置和完整的生命周期管理。

相关文章:

  • 77.组合问题
  • C++ STL入门:vecto容器
  • nextjs站点地图sitemap添加
  • 算法题(142):木材加工
  • Music AI Sandbox:打开你的创作新世界
  • java使用MinIO,虚拟机时间异常
  • Typora安装使用教程,图片相对储存路径路径设置
  • 滚珠导轨:电子制造领域精密运动的核心支撑
  • 跨线程和跨进程通信还有多种方式对比
  • 大模型(LLMs)agent
  • C++之“继承”
  • 年龄估计数据集
  • 深入探索 JavaScript 中的模块对象
  • 面试问题(连载。。。。)
  • 最优化方法Python计算:有约束优化应用——线性Lasso回归预测器
  • LeetCode算法题(Go语言实现)_62
  • 使用JAVA对接Deepseek API实现首次访问和提问
  • 【MySQL】第二弹——MySQL表的增删改查(CRUD)
  • 【Linux】module list的用法
  • 流批了,低调使用
  • 欧盟决意与俄罗斯能源彻底决裂之际,美国谋划新生意:进口俄气对欧转售
  • 比特币价格重返10万美元,哪些因素使然?
  • 云南一餐馆收购长江野生鱼加工为菜品,被查处罚款
  • 人民时评:透过上海车展读懂三组密码
  • 山寨“小米”智能马桶、花洒销售额过亿,被判赔3500万元
  • 深入贯彻中央八项规定精神学习教育中央第一指导组指导督导河北省见面会召开