183 lines
3.0 KiB
Markdown
Executable File
183 lines
3.0 KiB
Markdown
Executable File
# pm 2
|
||
|
||
> 用于生产环境的 Nodejs 的进程管理工具
|
||
> **保证服务不会中断**一直在线,并且提供0秒reload功能,还有其他一系列进程管理、监控功能
|
||
> 内置一个负载均衡
|
||
|
||
官方: [PM2 - Quick Start](https://pm2.keymetrics.io/docs/usage/quick-start/)
|
||
|
||
## 常见命令
|
||
|
||
### 启动
|
||
|
||
```sh
|
||
# 启动app.js应用
|
||
pm2 start app.js
|
||
|
||
# 启动应用并设置name
|
||
pm2 start app.js --name 程序名
|
||
|
||
# 开发模式启动,即不启用后台运行
|
||
pm2-dev start ...
|
||
```
|
||
|
||
### 监视
|
||
|
||
监听模式启动,当文件发生变化,自动重启
|
||
|
||
```sh
|
||
# 指定程序名的情况下
|
||
pm2 start app.js --name 程序名 --watch
|
||
# 未指定程序名的情况下
|
||
pm2 start app.js --watch
|
||
```
|
||
|
||
### 进程
|
||
|
||
```sh
|
||
# 列出所有进程
|
||
pm2 list
|
||
# 简写
|
||
pm2 ls
|
||
|
||
# 从进程列表中删除进程
|
||
pm2 delete [appname] | id
|
||
# 指定进程名删除
|
||
pm2 delete app
|
||
# 指定进程id删除
|
||
pm2 delete 0
|
||
# 删除进程列表中所有进程(关闭并删除应用)
|
||
pm2 delete all
|
||
|
||
# 查看某个进程具体情况
|
||
pm2 describe app
|
||
|
||
# 监控各个应用进程cpu和memory使用情况
|
||
pm2 monit
|
||
```
|
||
|
||
### 重启
|
||
|
||
```sh
|
||
# 同时杀死并重启所有进程,短时间内服务不可用,生成环境慎用
|
||
pm2 restart app.js
|
||
# 重启所有进程
|
||
pm2 restart all
|
||
# 重新启动所有进程,0秒重启,始终保持至少一个进程在运行
|
||
pm2 reload app.js
|
||
# 以群集模式重新加载所有应用程序
|
||
pm2 gracefulReload all
|
||
```
|
||
|
||
### 日志
|
||
|
||
```sh
|
||
# 根据指定应用名/应用ID查看应用日志
|
||
pm2 logs [Name|ID]
|
||
# 查看所有进程的日志
|
||
pm2 logs all
|
||
|
||
# 显示指定应用详情
|
||
pm2 show [Name|ID]
|
||
|
||
# 清除日志
|
||
pm2 flush <app-name>
|
||
```
|
||
|
||
### 停止
|
||
|
||
```sh
|
||
pm2 stop [AppName|ID]
|
||
|
||
pm2 stop all
|
||
```
|
||
|
||
### 杀死所有进程
|
||
|
||
```sh
|
||
pm2 kill
|
||
```
|
||
|
||
### 静态服务器
|
||
|
||
```sh
|
||
# 将目录dist作为静态服务器根目录,端口为8080
|
||
pm2 serve ./dist 8080
|
||
```
|
||
|
||
### 集群
|
||
|
||
```sh
|
||
# 启用群集模式(自动负载均衡)
|
||
# -i 表示 number-instances 实例数量
|
||
# max 表示 PM2将自动检测可用CPU的数量 可以自己指定数量
|
||
pm2 start app.js -i max
|
||
```
|
||
|
||
### 设置开机启动
|
||
|
||
```sh
|
||
# 可选项:ubuntu, centos, redhat, gentoo, systemd, darwin, amazon
|
||
pm2 startup centos
|
||
# 按提示输入命令,最后保存
|
||
pm2 save
|
||
pm2 unstartup centos
|
||
```
|
||
|
||
### pm2定时任务
|
||
|
||
```sh
|
||
pm2 start main.py --name mihoyo --interpreter=python3
|
||
pm2 logs mihoyo --lines 1000
|
||
pm2 flush appname
|
||
```
|
||
|
||
```json
|
||
{
|
||
"apps": [
|
||
{
|
||
"name": "ssr",
|
||
"script": "main.py",
|
||
"interpreter": "python3",
|
||
"cron_restart": "0 23 * * *",
|
||
"autorestart": false,
|
||
"watch": false
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
## 开机启动
|
||
|
||
```sh
|
||
# 保存当前状态
|
||
pm2 save
|
||
# 生成启动命令
|
||
pm2 startup
|
||
# 执行命令
|
||
|
||
# 取消开机启动
|
||
pm2 unstartup systemd
|
||
```
|
||
|
||
## 不自动重启
|
||
|
||
```
|
||
--no-autorestart
|
||
```
|
||
|
||
## nodejs服务运行后结束
|
||
|
||
```json
|
||
{
|
||
"apps": [
|
||
{
|
||
"name": "189checkin",
|
||
"script": "src/app.js",
|
||
"cron_restart": "0 23 * * *",
|
||
"autorestart": true,
|
||
"max_restarts": 1
|
||
}
|
||
]
|
||
}
|
||
``` |