Skip to content

pm2

pm2官网

PM2node 进程管理工具,可以利用它来简化很多 node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等

安装

前置条件

  • 安装pm2需要node环境
sh
$ npm install pm2@latest -g
# or
$ yarn global add pm2
  • 启动
sh
pm2 start app.js

常用命令

  • 查看进程: pm2 list

  • 启动所有进程: pm2 startup

  • 删除某个进程: pm2 delete <进程ID>

  • 停止某个进程: pm2 stop <进程ID>

  • 重启所有进程: pm2 restart all

  • 删除所有进程: pm2 delete all

  • 停止所有进程: pm2 stop all

  • 查看日志: pm2 logs

  • 保存进程列表: pm2 save

pm2启动项目

  • 普通启动
sh
pnpm run start
  • pm2启动
sh
pm2 start pnpm --name “自定义你的进程名字” -- run [实际执行的命令]

示例

sh
pm2 start pnpm --name "blog" -- run start

保活

重启服务器,pm2启动的项目可以自行启动,也是我们使用pm2最主要的原因

配置自动启动项目

配置 PM2 使其在系统重启后自动启动项目

执行 pm2 list 查看项目已经在pm2启动列表里边

执行

sh
pm2 startup systemd

这个命令会生成一个 systemd 服务文件,并给出一个命令供你复制和运行。

脚本生成示例
sh
pm2 startup systemd
[PM2] Init System found: systemd
Platform systemd
Template
[Unit]
Description=PM2 process manager
Documentation=https://pm2.keymetrics.io/
After=network.target

[Service]
Type=forking
User=root
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Environment=PATH=/root/加密加密加密加密/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Environment=PM2_HOME=/root/.pm2
PIDFile=/root/.pm2/pm2.pid
Restart=on-failure

ExecStart=/加密加密加密加密/ons/node/v18.20.4/lib/node_modules/pm2/bin/pm2 resurrect
ExecReload=/加密加密加密加密/ons/node/v18.20.4/lib/node_modules/pm2/bin/pm2 reload all
ExecStop=/加密加密加密加密/ons/node/v18.20.4/lib/node_modules/pm2/bin/pm2 kill

[Install]
WantedBy=multi-user.target

Target path
/etc/systemd/system/pm2-root.service
Command list
[ 'systemctl enable pm2-root' ]
[PM2] Writing init configuration in /etc/systemd/system/pm2-root.service
[PM2] Making script booting at startup...
[PM2] [-] Executing: systemctl enable pm2-root...
[PM2] [v] Command successfully executed.
+---------------------------------------+
[PM2] Freeze a process list on reboot via:
$ pm2 save

[PM2] Remove init script via:
$ pm2 unstartup systemd

运行以下命令来完成 PM2 的启动配置:

sh
sudo env PATH=$PATH:${环境变量 PATH} ${PM2 的完整路径} startup systemd -u root --hp /root

示例

sh
sudo env PATH=$PATH:/root/加密加密加密加密/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin /加密加密加密加密/ons/node/v18.20.4/lib/node_modules/pm2/bin/pm2 startup systemd -u root --hp /root

命令的解析如下

  • sudo: 以超级用户权限运行命令。
  • env PATH=$PATH:...: 设置环境变量 PATH,包含了所有必要的目录。
  • /root/.nvm/versions/node/v18.20.4/lib/node_modules/pm2/bin/pm2: PM2 的完整路径。
  • startup systemd: 指示 PM2 创建 systemd 启动脚本。
  • -u root: 指定运行 PM2 的用户为 root。
  • --hp /root: 指定 root 用户的主目录。

运行这个命令后,PM2 将被配置为在系统启动时自动运行

运行保存脚本

sh
pm2 save

这将保存当前的 PM2 进程列表,确保在系统重启后这些进程会被自动重启

要使 PM2 在系统启动时自动启动,运行

sh
sudo systemctl enable pm2-<username>

按照示例需要执行

sh
sudo systemctl enable pm2-root