前端

pm2常用命令,Node.js的PM2进程管理器

2019-08-09聚力创意

1. 全局安装

// Using npm
$ npm install -g pm2
// Using yarn
$ yarn global add pm2

2. 命令行启动 / 单个启动

// 启动 app.js,命名为 my-app
$ pm2 start app.js --name "my-app"
// 启动 num 个应用实例,自动负载均衡,单机基于多 cpu 内核的负载均衡
// num 写为 0 或者 max,就会跑和CPU核数相同的进程,num 写为数字,写几就会跑几个进程
$ pm2 start app.js -i num
// 启动并监听项目文件变化
$ pm2 start app.js --name "my-app" --watch
// pm2来部署 nuxt 项目
$ pm2 start npm --name "nuxt-app" -- start

3. 配置文件启动 / 批量启动

// 配置文件 server.json
{
  "apps": [
    {
      "name": "appA",
      "script": "./appA.js",
      "watch": true,
      "env": {
        "NODE_ENV": "development"
      },
      "env_production": {
        "PORT": 3000,
        "NODE_ENV": "production"
      }
    },
    {
      "name": "appB",
      "script": "./appB.js",
      "watch": true
    }
  ]
}

// 启动命令
$ pm2 start server.json

配置选项

字段 类型 例子 描述
name string “my-api” 应用的名字,默认是脚本文件名
script string “./api/app.js” 脚本相对 pm2 start的相对路径
cwd string “/var/www/“ 指定应用启动的目录
instances number -1 应用启动的实例
exec_mode string “cluster” 应用启动模式,可以是”cluster”或”fork”
watch boolean or [] true 当目录文件或子目录文件有变化时自动重新加载应用
ignore_watch list [”[\/\]./”, “node_modules”] list中的正则匹配的文件和目录有变化时不重新加载应用
max_menory_restart string “150M” 当应用超过设定的内存大小就自动重启
env object {“NODE_ENV”: “development”, “ID”: “42”} 传递给应用的环境变量
env_ object {“NODE_ENV”: “production”, “ID”: “89”} 命令行启动应用时 –env 参数调用的环境类型
log_date_format string “YYYY-MM-DD HH:mm Z” 日志时间格式
error_file string   错误文件的路径,默认: $HOME/.pm2/logs/XXXerr.log
out_file string   输出文件路径,默认:$HOME/.pm2/logs/XXXout.log
pid_file string   pid文件路径,默认: $HOME/.pm2/pid/app-pm_id.pid
min_uptime string   程序最小运行时,运行这么长时间就认为应用启动过,否则认为异常
max_restarts number 10 应用异常重启最多次数
listen_timeout number 8000 设定的时间内如果应用没有被监听则强制重启(单位:毫秒)

4. 重启

// 重启
$ pm2 restart name|id  # 重启
// 重启所有进程,相当stop+start
$ pm2 restart all
// 0秒停机重载进程(用于不间断进程),失败后退化到restart
$ pm2 reload name|id
$ pm2 reload all

5. 查看

// 查看进程
$ pm2 l
$ pm2 list
// 查看日志
$ pm2 logs
// 查看单个进程日志
$ pm2 log name|id
// 查看进程详情
$ pm2 show name|id
$ pm2 info name|id
// 查看CPU和内存资源占用
$ pm2 monit
// 查看 pm2 版本
$ pm2 -v

6. 停止

// 停止指定进程
$ pm2 stop name|id
// 停止所有进程
$ pm2 stop all

7. 删除

// 删除指定进程
$ pm2 delete name|id
// 删除所有进程
$ pm2 delete all

8. 开机自启动

// 创建开机自启动命令
$ pm2 startup
// 保存当前应用列表
$ pm2 save
// 重新加载保存的应用列表
$ pm2 resurrect
// 移除开机自启动
$ pm2 unstartup

9. 更新

// 更新前保存当前进程,保存过忽略
pm2 save
// 更新 - 下载
npm install pm2 -g
// 更新 - 执行
pm2 update

10. 启动静态服务器

// 在当前目录跑起一个端口号为9001,名字为 my-app 的静态服务器,监听文件变化
$ pm2 serve . 9001 --name "my-app" --watch
蜀ICP备17044229号