PM2速查
**PM2** 是 Node.js 应用的生产级进程管理工具,支持后台运行、自动重启、日志管理、集群部署、性能监控等。
PM2 速查手册(Node.js 进程管理利器)
PM2 是 Node.js 应用的生产级进程管理工具,支持后台运行、自动重启、日志管理、集群部署、性能监控等。本文档整理最常用命令与最佳实践,适用于开发、测试及运维场景。
一、安装
# 全局安装 npm install -g pm2 # 验证版本 pm2 --version
二、启动应用
1. 基础启动
# 启动一个 Node.js 应用 pm2 start app.js # 指定进程名称(推荐!避免重复) pm2 start app.js --name "my-api"
2. 多进程/集群模式(提升性能)
# 启动 4 个实例 pm2 start app.js -i 4 # 按 CPU 核心数自动启动(推荐用于生产) pm2 start app.js -i max
3. 启动其他语言脚本
# Python pm2 start script.py --interpreter python # Bash pm2 start script.sh --interpreter bash
⚠️ 使用
--interpreter显式指定解释器,避免识别错误 ty-reference。
三、进程管理
查看状态
# 列出所有进程 pm2 list # 实时监控 CPU/内存 pm2 monit # 查看详细信息(含 PID、启动时间、路径等) pm2 show <app-name-or-id>
重启与重载
# 平滑重载(0 秒停机,适合线上服务!) pm2 reload my-api # 强制重启(有短暂中断) pm2 restart my-api # 重载所有应用 pm2 reload all
✅ reload vs restart:
reload:逐个替换工作进程,保持服务可用(需应用支持)restart:全部停止再启动,会中断请求 ty-reference。
停止与删除
# 停止进程(保留注册信息) pm2 stop my-api # 彻底删除进程(从 PM2 注册表移除) pm2 delete my-api # 删除所有进程 pm2 delete all
💡 重要:同名进程必须通过 ID 删除,否则会删光所有同名进程!
四、日志管理
# 查看实时日志(合并 stdout + stderr) pm2 logs my-api # 只看错误日志 pm2 logs my-api --err # 只看标准输出 pm2 logs my-api --out # 清空日志文件(不停服务) pm2 flush # 启动时指定日志路径 pm2 start app.js --name "my-api" -o ./logs/out.log -e ./logs/error.log
📁 日志默认位置:
~/.pm2/logs/
五、配置文件(推荐方式)
创建 ecosystem.config.js:
// ecosystem.config.js module.exports = { apps: [{ name: 'blog', script: 'npx', args: 'next start -p 3000', cwd: '/var/www/blog', instances: 'max', exec_mode: 'cluster', autorestart: true, max_memory_restart: '1G', env: { NODE_ENV: 'production' } }] };
启动:
pm2 start ecosystem.config.js
✅ 优势:版本可控、团队共享、避免命令行拼写错误 ty-reference。
六、持久化与开机自启
# 保存当前进程列表 pm2 save # 设置开机自启(按提示执行生成的命令) pm2 startup # 示例(Ubuntu): # sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u your-user --hp /home/your-user
🔁 服务器重启后,PM2 会自动恢复所有应用 ty-reference。
七、高级操作
恢复已保存的进程
pm2 resurrect
查看资源使用
pm2 status # 简略状态 pm2 describe 0 # ID=0 的详细资源占用
更新 PM2 自身
pm2 update
杀掉所有 PM2 进程(慎用)
pm2 kill
八、常见问题速查
| 问题 | 解决方案 |
|---|---|
| 同名进程无法区分? | 用 pm2 list 看 ID,通过 ID 操作 |
| 修改代码不生效? | 必须 pm2 reload 或重新 build(如 Next.js) |
| 日志没输出? | 检查是否用了 console.log;避免用 npm run start 启动 |
| 内存泄漏? | 设置 max_memory_restart: '1G' 自动重启 |
| 开机不自启? | 执行 pm2 startup 并按提示运行生成的命令 |
九、最佳实践
- 始终使用唯一
--name - 生产环境用
ecosystem.config.js - 更新代码后用
pm2 reload而非restart - 静态站点(如 Next.js)必须先
build再启动 - 配合
nginx做反向代理 + HTTPS - 定期
pm2 save保存进程状态
📚 参考:
- PM2 官方文档
- CSDN 技术社区《PM2 常用命令与实用技巧速查表》ty-reference
✅ 将本文档保存为 pm2-cheatsheet.md,可作为团队标准操作指南。
