风险提示:虚拟货币不具有法定货币等同的法律地位,参与虚拟货币投资交易存在法律风险,继续浏览代表你同意以上所有声明,否则请立即关闭本站!

Linux PM2 进程管理入门与实战教程

什么是 PM2?为什么需要它?

在 Web 开发和系统运维过程中,我们经常需要运行 Node.js 应用程序。然而,仅仅使用 node app.js 命令启动应用是远远不够的。如果应用进程意外崩溃了、需要定时重启,或者需要同时管理多个服务,手动操作会非常麻烦。

PM2 (Process Manager 2) 就是一个高性能的进程管理工具,专门为 Node.js 应用设计。它解决了以下核心问题:

  1. 进程守护(Daemonization): 即使应用进程意外退出,PM2 也能自动捕获退出信号并重启它,确保服务持续在线。
  2. 集群管理(Clustering): PM2 可以轻松地将应用部署到多核 CPU 上,实现高并发和负载均衡,极大地提升了应用的吞吐量。
  3. 日志管理: 它提供了集中的日志查看和管理功能,方便我们排查问题。

简单来说,PM2 就是一个“守护进程”,让你的 Node.js 应用像系统服务一样可靠地运行。

一、环境准备与 PM2 安装

在开始使用 PM2 之前,请确保您的 Linux 系统上已经安装了以下环境:

  1. Node.js 和 npm: PM2 是一个基于 npm 包的工具。
  2. 命令行工具: 确保您可以使用终端进行操作。

1. 确认 Node.js 和 npm

在终端中运行以下命令来检查是否已安装:

node -v
npm -v

如果未安装,请根据您的 Linux 发行版(如 Ubuntu/Debian)安装 Node.js。

2. 全局安装 PM2

由于 PM2 是一个系统级别的工具,我们通常将其全局安装,这样在任何目录下都能调用 pm2 命令。

在终端中执行以下命令:

npm install pm2 -g

安装完成后,您可以通过运行 pm2 -v 来验证是否安装成功。

二、PM2 基础使用流程(单进程管理)

假设您有一个名为 app.js 的 Node.js 应用程序,您现在开始学习如何使用 PM2 来管理它。

1. 启动应用

最简单的使用方式就是直接让 PM2 启动您的程序:

pm2 start app.js

执行此命令后,PM2 会在后台启动 app.js,并在终端返回一个进程 ID (PID) 和状态信息。

2. 查看进程状态

这是最重要的命令之一。它可以列出所有由 PM2 管理的进程,并显示它们的当前状态(在线、退出、重启中等)。

pm2 list
# 或简写为
pm2 ls

输出示例:

┌─────┬──────────┬──────% CPU    % MEM    ┌─────┐
├─────┤          │      │          │     │
│ app │  node app.js │ 0%  0%    │ stdout │
└─────┴──────────┴──────┴──────────┴─────┘

3. 查看日志

当应用运行时,它产生的标准输出(stdout)和标准错误(stderr)都需要被捕获和查看。

实时查看日志:

pm2 logs app.js

查看指定时间段的日志:

PM2 内部会记录日志,您可以通过如下命令查看完整的日志历史。

4. 停止与重启应用

  • 停止应用: 如果需要暂时停止服务,可以使用进程名或 PID。

    pm2 stop app.js
  • 重启应用: 如果代码有更新,需要重启服务。

    pm2 restart app.js

5. 保存进程列表(关键步骤!)

默认情况下,如果您退出终端会话(SSH 断开),PM2 管理的所有进程也会随之终止。为了让应用能像系统服务一样持续运行,我们需要保存当前运行的进程列表,并将其配置为开机自启。

A. 保存列表:

pm2 save

B. 设置开机自启(生成启动脚本):

PM2 会生成一个系统服务脚本(通常是 Systemd 或 Init.d 兼容的),您需要运行它来设置开机启动。

pm2 startup

运行此命令后,它会提示您执行特定的系统命令(例如 sudo env PATH=$PATH /usr/bin/pm2 startup systemd --ulimit nofile=65536)。请务必执行系统提示的完整命令。

三、进阶使用:集群模式与生态应用

1. 集群模式(Clustering)

如果您的应用是高并发的,单进程无法充分利用多核 CPU 的能力。PM2 提供了内置的集群管理功能,它会自动为您的应用创建和管理多个工作进程,实现负载均衡。

假设您的服务器有 4 个 CPU 核,您需要启动 4 个进程来充分利用资源。

# 告诉 PM2 使用 CPU 的核心数启动应用
pm2 start app.js -i max
  • -i max:表示使用所有可用的 CPU 核心数启动实例。

2. 常用生态应用(推荐)

PM2 不仅是一个进程管理器,它还提供了一些极其实用的“生态应用”:

命令功能描述用途场景
pm2 monit实时监控。提供一个类似于 top 命令的界面,实时查看所有进程的 CPU、内存使用情况。性能调优、资源瓶颈分析。
pm2 describe 查看进程详情。显示进程的更多配置信息、内存、CPU 变化图等。深入了解进程运行状态。
pm2 delete 删除进程。彻底移除 PM2 管理的进程。清理不再需要的服务。

总结回顾

动作命令说明
安装npm install pm2 -g全局安装 PM2 工具。
启动pm2 start app.js启动应用进程。
查看状态pm2 list查看所有管理进程列表。
实时日志pm2 logs app.js实时查看应用的输出和错误日志。
重启pm2 restart app.js重新启动服务(用于代码更新)。
集群pm2 start app.js -i max利用所有 CPU 核启动多个实例。
开机自启pm2 startup + pm2 save确保服务器重启后应用自动运行。

掌握了 PM2,您就拥有了部署和维护稳定、高性能 Node.js 应用的基础能力。祝您开发顺利!

发表评论