pm2使用笔记

TIP

windows 服务器中,系统使用的是 node 开发环境,使用 pm2 工具进行部署,在此记录相关步骤和命令

1. 配置文件

我的项目工程目录如下:

工程根目录下的 processes.json文件 为部署配置文件,参数如下:

{
    "apps" : [{
      "name" : "myServer",  
      "script": "./bin/www",
      "cwd": "./",          
      "watch":[
          "bin",
          "common",
          "models",
          "public",
          "routes",
          "views"
      ],
      "error_file":"./logs/app-err.log",
      "out_file":"./logs/app-out.log",  
      "log_date_format":"YYYY-MM-DD HH:mm Z"
      }]
  }

参数释义:

  • name:服务名称
  • script:node启动文件的路径
  • cwd:项目所在的目录
  • watch:布尔值或文件数组,允许开启监听文件改动重启
  • error_file:错误日志存放路径
  • out_file:全部日志存放路径
  • log_date_format:日志时间格式

2. 项目部署

首次项目部署命令:

pm2 start processes.json

执行完命令后,如果环境没有问题、程序没有报异常,那么项目就正常启动了,查看项目运行状态 ,查看状态命令为:

pm2 ls
or
pm2 list

3. pm2常用命令

查看当前任务列表

pm2 ls
or
pm2 list

启动任务,并自定义任务名称

pm2 start 脚本 --name 自定义任务名称

启用项目,使用npm run脚本别名的方式,注意:-- run中间有一个空格,不加就凉,并且只能放在最后

pm2 start npm --name 自定义任务名称 – run package.json中的脚本别名

停止任务

pm2 stop id|name

重启任务

pm2 restart id|name

删除任务,注意:如果任务在运行中,会自动停止,all表示删除全部

pm2 delete id|name|all

保存,可以将当前任务列表持久化保存在电脑磁盘中,关机重启后也不会失效(只要执行pm2 update命令即可还原

pm2 save

更新,可以将上一次执行 pm2 save时的状态还原

pm2 update

4. 更新监听开关

项目部署后,后来重启了几次,刚开始watching是enabled,后来布置怎地变成了disabled

使用 pm2 show 1 ,查看程序的详细信息,【watch & reload 】为 x,使用【pm2 start 1 --watch】重新启动该程序,那么watching 正常为 enabled,【watch & reload 】为 ✔ 了.

C:\Users\Administrator>pm2 show 1
Describing process with id 1 - name dspmApiSjzProd
┌───────────────────┬─────────────────────────────────────────────────────────────────── ─────┐
│ status            │ online                                                                 │
│ name              │ dspmApiSjzProd                                                         │
│ namespace         │ default                                                                │
│ version           │ 0.0.0                                                                  │
│ restarts          │ 0                                                                      │
│ uptime            │ 11s                                                                    │
│ script path       │ D:\project\shijiazhuang\model-project\dspmApiSjz_prod\bin\www          │
│ script args       │ N/A                                                                    │
│ error log path    │ D:\project\shijiazhuang\model-project\dspmApiSjz_prod\logs\app-err.log │
│ out log path      │ D:\project\shijiazhuang\model-project\dspmApiSjz_prod\logs\app-out.log │
│ pid path          │ C:\Users\Administrator\.pm2\pids\dspmApiSjzProd-1.pid                  │
│ interpreter       │ node                                                                   │
│ interpreter args  │ N/A                                                                    │
│ script id1                                                                      │
│ exec cwd          │ D:\project\shijiazhuang\model-project\dspmApiSjz_prod                  │
│ exec mode         │ fork_mode                                                              │
│ node.js version   │ 14.17.5                                                                │
│ node env          │ N/A                                                                    │
│ watch & reload    │ ✔                                                                      │
│ unstable restarts │ 0                                                                      │
│ created at        │ 2023-02-28T06:21:25.747Z                                               │
└───────────────────┴─────────────────────────────────────────────────────────────────── ─────┘
Actions available
┌────────────────────────┐
│ km:heapdump            │
│ km:cpu:profiling:start │
│ km:cpu:profiling:stop  │
│ km:heap:sampling:start │
│ km:heap:sampling:stop  │
└────────────────────────┘
Trigger via: pm2 trigger dspmApiSjzProd <action_name>

Code metrics value
┌────────────────────────┬───────────┐
│ Used Heap Size         │ 21.19 MiB │
│ Heap Usage             │ 88.78 %   │
│ Heap Size              │ 23.87 MiB │
│ Event Loop Latency p95 │ 4.04 ms   │
│ Event Loop Latency     │ 0.99 ms   │
│ Active handles         │ 6         │
│ Active requests        │ 0         │
└────────────────────────┴───────────┘
Divergent env variables from local env
┌─────────────┬────────────┐
│ SESSIONNAME │ RDP-Tcp#62 │
└─────────────┴────────────┘

Add your own code metrics: http://bit.ly/code-metrics
Use `pm2 logs dspmApiSjzProd [--lines 1000]` to display logs
Use `pm2 env 1` to display environment variables
Use `pm2 monit` to monitor CPU and Memory usage dspmApiSjzProd