跳至正文

PM2简介及常用命令

一 PM2简介

PM2 是一个功能强大的进程管理工具,尤其适合 Node.js 应用的生产环境部署。主要具备以下几个突出特点:

进程守护,自动重启:这是最核心的功能。PM2 可以确保你的应用作为守护进程在后台运行。即使应用因为错误而崩溃,PM2 也会立即自动重启它,从而极大地提高了应用的稳定性和可靠性。

负载均衡,多核发力:Node.js 默认是单线程的,无法充分利用多核CPU的优势。PM2 支持 cluster(集群)模式,可以启动多个进程来处理请求,并通过内置的负载均衡器将流量分发到各个进程,从而提升应用的整体性能和并发处理能力。

日志管理,清晰高效:PM2 会自动收集你应用的标准输出(console.log)和标准错误输出(console.error),并按进程分别存储到日志文件中。你可以使用 pm2 logs 命令方便地实时查看日志,免去了手动管理日志文件的麻烦。

性能监控,一目了然:通过 pm2 monit 命令,你可以打开一个实时的终端仪表盘,清晰地看到每个进程的CPU和内存占用情况,方便进行性能排查和监控。

启动脚本,开机自启:PM2 可以生成系统启动脚本,并保存当前运行的进程列表。这样,当你的服务器意外重启后,PM2 会自动恢复并重新启动你所管理的所有应用,实现真正的“永不停机”。

二 PM2安装

使用 npm 安装,是最通用、最经典的方法,可以让你获得最新版本的 PM2。

  1. 安装 Node.js 和 npm:
    PM2 是基于 Node.js 的工具,因此需要先安装 Node.js 环境。

  2. 全局安装 PM2:

sudo npm install -g pm2

安装后,你可以通过 pm2 -v 验证版本。

三 常用基本命令

安装完成后,就可以使用 PM2 来管理你的应用了。以下是一些最常用的命令。

启动与状态

命令 功能描述 示例
pm2 start <脚本文件> 启动一个应用并添加到 PM2 的进程列表。 pm2 start app.js
pm2 start <脚本文件> --name <应用名> 启动应用并为其指定一个容易识别的名称。 pm2 start build/server.js --name my-api
pm2 start <脚本文件> -i <数量> 以集群模式启动,max 表示启动与 CPU 核心数相同的进程数。 pm2 start app.js -i max
pm2 [list/ls/status] 列出 PM2 管理的所有应用及其状态(进程ID、状态、CPU/内存使用率等)。 pm2 list

管理与操作

命令 功能描述 示例
pm2 stop <应用名/ID/all> 停止指定的应用或所有应用(进程仍在列表中)。 pm2 stop my-api 或 pm2 stop all
pm2 restart <应用名/ID/all> 重启指定的应用或所有应用。 pm2 restart my-api
pm2 reload <应用名/all> 重新加载应用,实现零宕机时间的重启(仅适用于集群模式)。 pm2 reload all
pm2 delete <应用名/ID/all> 从 PM2 的进程列表中删除应用。 pm2 delete my-api
pm2 save 保存当前进程列表,以便系统重启后通过 pm2 startup 恢复。 pm2 save
pm2 startup 生成并配置开机自启脚本,确保服务器重启后 PM2 和你的应用自动运行。 pm2 startup

监控与调试

命令 功能描述 示例
pm2 monit 打开一个终端实时仪表盘,监控所有进程的 CPU 和内存使用情况。 pm2 monit
pm2 logs [应用名] 实时查看应用日志。指定应用名可查看特定应用的日志。 pm2 logs my-api
pm2 logs --lines <行数> 查看指定行数的历史日志。 pm2 logs --lines 200
pm2 show <应用名/ID> 显示指定应用的详细信息,如运行模式、重启次数、文件路径、环境变量等。 pm2 show my-api

更新与维护

命令 功能描述 示例
sudo npm install pm2@latest -g && pm2 update 更新 PM2 到最新版本,并更新内存中的 PM2 守护进程。 (组合命令)

四 总结

简单来说,安装好 PM2 后,可以先用 pm2 start 跑起应用,用 pm2 list 看看状态,用 pm2 logs 查查输出,再用 pm2 save 和 pm2 startup 这套组合拳让它能开机自启,最后用 pm2 monit 实时监控资源占用。

假设要执行的node程序路径是:build/server.js,自定义名称为 x-server,则 一个简单的PM2 执行示例为:

pm2 start build/server.js --name x-server
pm2 save
pm2 startup
标签:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注