PM2
1. 工具定位
Section titled “1. 工具定位”PM2 是一款带有负载均衡功能的 Node.js 应用的进程管理器。它不仅能让 Node 脚本在后台持续运行(守护进程),还能提供性能监控、自动重启及支持多实例部署。
安装指令:npm install pm2 -g
2. 声明式配置:ecosystem.config.js
Section titled “2. 声明式配置:ecosystem.config.js”在生产环境中,强烈建议使用 ecosystem 配置文件来统一管理启动参数,而非在命令行拼写冗长的参数。
// ecosystem.config.js 示例module.exports = { apps: [ { name: 'tm_nuxt_app', // 进程别名,方便 pm2 管理 script: 'npm', // 执行脚本的解释器/入口 args: 'start', // 传递给 script 的参数 (相当于执行 npm start)
// 高级选项 (被注释的部分) // exec_mode: 'cluster', // 开启集群模式,最大化利用多核 CPU // instances: 'max', // 启动的实例数量,'max' 会自动探测 CPU 核心数 // watch: true, // 监听文件变动,自动重启 (仅开发环境建议) // env: { NODE_ENV: "production" } // 注入环境变量 } ]}3. 常用进程管理实战指令
Section titled “3. 常用进程管理实战指令”3.1. 启动与查看
Section titled “3.1. 启动与查看”# 基于配置文件启动 (需在同级目录下执行)pm2 start ecosystem.config.js
# 直接启动单个脚本pm2 start test.py # 甚至会自动调用对应的 python 解释器pm2 start test.js --name "my-app" --watch
# 查看监控面板pm2 list # 查看所有进程的列表与状态pm2 monit # 实时终端仪表盘 (CPU/内存)pm2 logs # 查看所有或特定进程的聚合日志3.2. 状态持久化与系统级开机自启
Section titled “3.2. 状态持久化与系统级开机自启”如果服务器重启,PM2 及其管理的进程会丢失。为了保证高可用,必须执行以下流程:
# 第一步:保存当前 PM2 正在托管的所有进程状态到 dump 文件pm2 save
# 第二步:生成并配置系统层面的开机自启动脚本 (Systemd)pm2 startup# (执行该命令后,终端会输出一段需 sudo 执行的指令,请复制并执行它)
# 第三步 (故障恢复):若需要手动从之前的保存点恢复进程树pm2 resurrect