# 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 // 配置文件