PM2 最全常用命令详解

一、前言

在Node.js、Koa2、Express等后端项目线上部署中,原生node命令存在致命短板:终端关闭服务就停止、程序崩溃不会自动重启、无法查看运行日志、不支持多进程负载均衡。而PM2是Node生态最主流的进程管理工具,完美解决以上痛点,也是你当前svgtoimage Koa项目线上必备的运维工具。

本文结合你的Koa项目(启动入口:bin/www),整理PM2全场景常用命令,每条命令附带可直接复制代码逐行讲解适用场景,全文贴合线上服务器真实运维流程,新手也能直接上手,全文约1500字。

二、PM2安装(前置准备)

1. 全局安装

复制代码
npm install pm2 -g

讲解:PM2必须全局安装,才能在服务器任意目录调用命令,无需在每个项目内重复安装。

2. 版本校验

复制代码
pm2 -v

讲解:查看当前PM2版本,验证安装是否成功,正常输出版本号即为安装完成。


三、项目启动核心命令(适配你的Koa项目)

你的项目启动文件为 bin/www,下方所有命令均贴合该入口文件实操。

1. 基础启动服务

ini 复制代码
# 方式1:直接指定启动文件(最常用)
pm2 start bin/www

# 方式2:自定义进程名称(方便后续管理,推荐)
pm2 start bin/www --name=svgtoimage

# 方式3:通过package.json脚本启动(和你项目prd命令一致)
pm2 start npm --name=svgtoimage -- run prd

细致讲解

  • pm2 start:核心启动指令,让项目后台运行,关闭服务器终端服务不会中断;
  • --name:给进程设置别名,后续重启、停止直接用别名即可,不用输入长路径,你的项目命名为svgtoimage方便区分;
  • 区别于原生node启动:node bin/www关闭ssh窗口服务直接挂掉,PM2后台常驻,线上部署必用。

2. 开机自启配置(服务器重启不丢服务)

bash 复制代码
# 1. 生成开机自启脚本
pm2 startup

# 2. 保存当前所有运行进程
pm2 save

细致讲解:服务器意外断电、重启后,Node服务默认不会自动启动,这两条命令是线上运维刚需。执行完第一条会输出一行命令,直接复制执行即可完成环境配置,第二条保存当前运行的所有进程列表,重启服务器后PM2会自动拉起所有项目。


四、进程状态查看命令(监控服务运行状态)

1. 查看所有进程列表

bash 复制代码
pm2 list
# 简写命令
pm2 ls

讲解:查看当前服务器所有PM2托管项目,展示进程ID、进程名、运行状态、CPU/内存占用、运行时长。重点看status列:online代表正常运行,errored代表程序报错停止。

2. 实时动态监控面板

复制代码
pm2 monit

讲解:打开可视化监控面板,实时查看每个进程CPU、内存占用、请求日志,适合排查项目内存泄漏、CPU占用过高问题,按Ctrl+C退出面板。

3. 查看进程详情

sql 复制代码
pm2 show svgtoimage

讲解:查看单个项目完整配置,包含启动路径、环境变量、重启次数、异常记录,适合排查项目频繁自动重启的问题。


五、进程重启/停止/删除命令(代码更新运维)

项目代码更新、配置修改后,必须重启服务才能生效,禁止直接kill进程。

1. 重启服务(两种模式)

bash 复制代码
# 软重启:0秒停机,无缝切换,不中断用户请求(线上首选)
pm2 reload svgtoimage

# 硬重启:彻底关闭进程再重启,会短暂断开连接(代码大改使用)
pm2 restart svgtoimage

核心区别讲解:线上生产环境优先用reload,实现热重启,用户无感知;restart会断开当前连接,适合依赖包更新、端口修改等大幅度改动。

2. 停止服务

python 复制代码
# 停止单个项目
pm2 stop svgtoimage

# 停止所有PM2项目
pm2 stop all

3. 删除进程(彻底移除托管)

perl 复制代码
# 删除单个进程
pm2 delete svgtoimage

# 删除所有进程
pm2 delete all

讲解:stop只是暂停服务,进程还保留在列表中;delete是彻底从PM2列表清除进程,卸载项目时使用。


六、日志查看命令(排查线上BUG核心)

你的svgtoimage是图片转换接口,线上报错无页面提示,只能通过日志排查问题。

yaml 复制代码
# 1. 实时查看最新日志(线上实时监控)
pm2 logs svgtoimage

# 2. 查看历史全部日志
pm2 logs svgtoimage --lines 1000

# 3. 清空所有日志文件
pm2 flush

讲解pm2 logs是运维最常用命令,Koa接口报错、svg图片转换失败、端口占用错误,全部会打印在日志中;--lines 1000代表查看最近1000行日志;日志文件会持续占用服务器磁盘空间,定期用pm2 flush清空即可。


七、进阶实用命令(性能优化)

1. 多进程启动(利用服务器多核CPU,提升接口并发)

css 复制代码
# -i max:根据服务器CPU核心数,开启最大进程数
pm2 start bin/www --name=svgtoimage -i max

讲解:Node.js默认单线程,单核CPU无法发挥服务器全部性能,-i max自动适配多核,提升图片转换接口并发能力,高访问量场景必备。

2. 重置重启次数

perl 复制代码
pm2 reset svgtoimage

讲解:项目异常崩溃后PM2会自动重启,重启次数会累计,该命令可以清空重启计数,方便后续监控真实异常情况。


八、常见故障排查(结合你的Koa项目)

  1. 服务频繁自动重启:执行pm2 logs查看报错,大概率是端口占用、代码语法错误;
  2. 服务器重启后服务没启动:重新执行pm2 startup && pm2 save;
  3. 代码更新页面无变化:必须执行pm2 reload/restart,浏览器缓存+服务缓存双重问题。

九、总结

针对你的Koa2图片转换项目,日常运维只需记住一套极简流程: 项目上线:pm2 start bin/www --name=svgtoimagepm2 startup && pm2 save 代码更新:pm2 reload svgtoimage 排查报错:pm2 logs svgtoimage 状态查看:pm2 list

PM2作为Node项目线上标配工具,核心价值就是进程守护、自动重启、日志管理、开机自启,搭配Nginx反向代理,即可完成Koa项目完整线上稳定部署,无需担心服务意外宕机问题。

相关推荐
长栎1 小时前
你每次 git commit 都在用设计模式,但你可能一个都没认出来
后端
长栎1 小时前
HikariCP 源码里的设计模式,比连接池本身更值得学
后端
Java编程爱好者1 小时前
从 B+ 树到应用层分表:MySQL 海量数据架构解析
后端
代码丰1 小时前
AtomicBoolean + CAS实现本地乐观锁
后端
fox_lht2 小时前
14.6.将错误重定向到标准错误
开发语言·后端·学习·rust
道友可好2 小时前
AI 测试全绿,代码却是错的
前端·人工智能·后端
techdashen3 小时前
Rust 基础设施团队 2025 Q4 回顾与 2026 Q1 计划
开发语言·后端·rust
神奇小汤圆3 小时前
互联网大厂精选面试八股文(附2026最新Java+AI高频题)| 建议收藏
后端
春天花会开1313 小时前
影像上传前置机网络架构设计模板(含VPN)
后端·架构