当前位置: 首页 > 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,它提供了最灵活的配置和完整的生命周期管理。

http://www.xdnf.cn/news/349381.html

相关文章:

  • 认识守卫-以及简单的示例和装饰器
  • Java网络编程:理解URI、URL和URN
  • python线上学习进度报告
  • Android13 权限管理机制整理
  • 308.旅行终点站
  • 正点原子IMX6U开发板移植Qt时出现乱码
  • 什么是死信队列?死信队列是如何导致的?
  • TLS 1.3:一把打不开旧锁的新钥匙,为何难成主流?
  • Blind SSRF with Shellshock exploitation过关
  • [人机交互]以用户为中心的交互设计
  • 基于译码器和锁存器的运行逻辑的简易算法
  • 算法解密:轮转数组问题全解析
  • 多源地震资料处理中的震源信号分离算法资料
  • Java内存分配
  • 【git】git fsmonitor
  • 第四章:基于langchain构造一个完整RAG系统
  • 移动端返回指定页面
  • 本地聊天机器人部署方案
  • 《运维那些事儿》专栏总目录(持续更新)
  • SQLite3介绍与常用语句汇总
  • 【日撸 Java 三百行】Day 5(Switch语句)
  • SOA 与微服务架构深度比较
  • 【C语言】(8)—指针2
  • chrome插件提取标签数据
  • Python cv2对象检测与跟踪:从基础到进阶实战
  • Java JWT 配置类 (JwtProperties) 学习笔记
  • el-table计算表头列宽,不换行显示
  • C++模板笔记
  • 使用DEEPSEEK快速修改QT创建的GUI
  • 【日撸 Java 三百行】Day 6(For语句)