原创

PM2入门

PM2是什么?

PM2全称是Process Manager 2,是个带负载均衡功能的Node.js应用进程管理器。虽然它是为Node.js设计的,但其实管理其他语言的应用也没有问题,比如Python、Shell脚本这些都可以。

安装PM2

npm install -g pm2

需要服务器上有Node.js环境,没有的话需要先安装个Node.js。

安装后可以查看以下版本

pm2 -v

建议隔段时间更新一下版本,新版本会修复一些Bug,或者带来一些新的功能。

npm install -g pm2@latest

核心命令格式

PM2 并不直接“管理”npm 包本身,而是通 调用 npm 脚本 来启动和守护 Node.js 应用进程。核心做法是将npm run <script> 作为 PM2 的启动命令。

启动默认 start 脚

pm2 start npm --name "app-name" -- start

使用pm2 start npm -- run <script-name> 语法,其中 -- 用于分隔 PM2 参数和 npm 参数

启动特定脚本(如 dev/build)

pm2 start npm --name "app-name" -- run dev

带参数启动

pm2 start npm --name "app-name" -- run start -- --port 3000

(双 -- 后为传递给 npm 的参数)

关键注意事项

工作目录

必须在项目根目录(包含 package.json 的目录)执行上述命令,否则 npm 无法找到脚本。

生产环境推荐

线上部署建议直接指定入口文件(如 pm2 start dist/server.js )或使用 ecosystem.config.js 配置文件,避免依赖 npm 启动带来的额外开销和路径解析问题。

集群模式限制

若需多进程负载均衡,建议直接对 Node 脚本使用 -i max 参数,而非通过 npm 间接启动,以确保集群模式正确生效。

常用管理操作

查看状态

pm2 list
pm2 ls
pm2 status

查看进程详情

pm2 show app-name
pm2 show 0    // 0为进程ID

查看监控面板

pm2 monit

停止/重启

pm2 stop app-name
pm2 stop all
pm2 restart app-name
pm2 restart all

删除

pm2 delete app-name
pm2 delete all

查看日志

所有进程日志

pm2 logs

查看指定进程的日志

pm2 logs app-name

清空日志

pm2 flush

这个命令会清空所有日志文件。

开机自启

pm2 startup + pm2 save

简言之,PM2 通过封装 npm run 命令实现进程守护,但生产环境更推荐直接管理 Node 进程以提升稳定性。

启动Python脚本

直接启动

pm2 start test.py --interpreter python3

需要指定解释器,不然pm2会用默认的python。

指定应用名

pm2 start test.py --interpreter python3 --name my-python-app
正文到此结束
相关文章
本文目录