# PM2 配置文件

# 配置内容

根目录创建配置文件 pm2.conf.json,内容如下:

{
  "apps": {
    "names": "pm2-test-server", // 服务名称
    "script": "app.js", // 相对执行命令,启动脚本的路径信息
    "watch": true, // 是否监听文件改变
    "ignore_watch": [
      // 忽略监听的文件
      "node_modules",
      "logs"
    ],
    "error_file": "logs/err.log", // 错误日志输出文件,不配置时通过 pm2.info 查看
    "out_file": "logs/out.log", // 访问日志输出文件,不配置时通过 pm2.info 查看
    "log_date_format": "YYYY-MM-DD HH:mm:ss" // 日志输出时间格式
  }
}

# 服务启动

TIP

启动指令:pm2 start 配置文件路径信息

该目录启动模式 pm2 start pm2.conf.json 即可,主要注意最后一列的 watching 此时是 enabled,这是配置文件中的 watch 的表现。

第一次启动后,进程列表是这样子的:

┌─────┬────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id  │ name   │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├─────┼────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0   │ app    │ default     │ 1.0.0   │ fork    │ 29788    │ 0s     │ 0    │ online    │ 0%       │ 2.7mb    │ han… │ enabled  │
└─────┴────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

修改 app.js 的内容后,再次 pm2 list 查看,可以发现 重启了,这就是文件变化了会监听重启服务

┌─────┬────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id  │ name   │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
├─────┼────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
│ 0   │ app    │ default     │ 1.0.0   │ fork    │ 29824    │ 10s    │ 1    │ online    │ 0%       │ 33.9mb   │ han… │ enabled  │
└─────┴────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

还有一个重启的体现就是访问日志 logs/out.log 的表现:




 

2022-02-05 21:22:21: Server is running at port 9999
2022-02-05 21:22:29: Current time is  1644067349845
2022-02-05 21:22:30: Current time is  1644067350179
2022-02-05 21:23:09: Server is running at port 9999  // 发生了服务重启

# 当前目录

注意,目录的结构决定了上述指令的书写方式,很重要。

  .
  ├── app.js
  ├── logs
  │   ├── err.log  // 错误日志
  │   └── out.log  // 访问日志
  ├── package.json
  └── pm2.conf.json // 配置文件