PM2 process manager for Node.js
2018/12/4 PM2 => 3.2.2
Installation
npm install pm2 -g
基础命令
pm2 start <js|json> // 启动并添加一个进程
pm2 ls // 显示所有进程
pm2 delete <name|id|script|all|json|stdin> // 停止并删除指定的进程
// 此进程使用kill 无效,因为存在守护进程,所以手动kill掉某个进程后会自动重启
pm2 stop <id|name|all|json|stdin> // 停止进程
pm2 start <id|name|all|json|stdin> // 启动指定进程
pm2 restart <id|name|all|json|stdin> // 重启指定进程 也可使用正则匹配多个进程
日志
// 1 实时查看某进程日志
pm2 logs <id|name|all>
// 2 当没有指定日志目录时,默认在~/.pm2/logs中存放这所有进程日志历史
pm2 flush 清空所有历史应用日志
负载均衡
pm2 start app.js -i <number | max> // 启动指定数量的子进程
配置文件
- 使用Generator
pm2 init // 生成 ecosystem.config.js
// 此时 pm2 start || pm2 start ecosystem.config.js 即可使用配置启动
// ecosystem.config.js
// 配置多个环境
module.exports = {
apps : [{
name: "app",
script: "./app.js",
// log start
output: "./out.log",
error: "./error.log",
log: "./combined.outerr.log",
log_type: "json", // 将日志按json打出
log_date_format: "YYYY-MM-DD",
merge_logs: true,
// log end
// output: is only standard output (console.log)
// error: is only error output (console.error)
// log combines output and error, disabled by default
// balancing start
instances: "max",
// balancing end
// watch and reload
watch: true,
env: {
NODE_ENV: "development",
},
env_production: {
NODE_ENV: "production",
}
}]
}
// 通过--env 指定环境
// 当进程被启动后 其环境则一般不可变,可通过--update-env 强制改变环境
- 自己设置配置文件 app.json
[{
"name": "app",
"script": "./app.js",
"error_file": "/data/app-logs/argus/err.log",
"out_file": "/data/app-logs/argus/out.log",
"exec_mode": "cluster_mode", // 单点/集群
"listen_timeout" : 10000,
"log_date_format" :"YYYY-MM-DD HH:mm:ss.SSS",
"env": {
"NODE_ENV": "production"
}
}]
保存进程列表
// ~/.pm2/dump.pm2 || ~/.pm2/dump.pm2.bak
pm2 dump | save // 保存当前的进程列表
pm2 resurrect // 恢复之前保存的进程列表
- 进程列表用json格式输出
pm2 prettylist // print json in a prettified JSON
- 配置文件具体参数
- 配置文件中的部署deploy 使用ssh
- PM2 源码