2025-03-29 14:35:49 +08:00

183 lines
3.0 KiB
Markdown
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
}
]
}
```