pm2
NODE.JS 进程管理工具
安装
npm install -g pm2
使用
首次启动命令
pm2 start js文件/json文件
# or
pm2 start start-app.json
查看 PM2 管理的程序列表
pm2 list
重启命令
pm2 restart js文件/json文件/指定的name/id
停止命令
pm2 stop 指定的name/id
删除 PM2 管理的程序
pm2 delete 指定的id/name
查看监控信息
pm2 monit
保存当前进行的进程
pm2 save
设置开机自启动
pm2 startup
负载均衡
PM2
内置自动负载均衡器,它将在每个进程之间共享所有 HTTP[s]/Websocket/TCP/UDP
连接。
在集群模式下启动应用程序:
pm2 start app.js -i max
在此处阅读有关集群模式的更多信息。
ecosystem 配置文件
您还可以创建一个名为 Ecosystem File 的配置文件来管理多个应用程序。
pm2 ecosystem
这将生成一个 ecosystem.config.js
文件:
module.exports = {
apps : [{
name: "app",
script: "./app.js",
env: {
NODE_ENV: "development",
},
env_production: {
NODE_ENV: "production",
}
}, {
name: 'worker',
script: 'worker.js'
}]
}
启动:
pm2 start process.yml
在此处阅读有关应用程序声明的更多信息。
开机启动
启动:
pm2 startup
保存:
pm2 save
在此处阅读有关启动脚本的更多信息。
应用监听
--watch
选项很简单:
cd /path/to/my/app
pm2 start env.js --watch --ignore-watch="node_modules"
这将在当前目录 + 所有子文件夹中的任何文件更改时监视并重新启动应用程序,并且它将忽略 node_modules
文件夹中的任何更改--ignore-watch="node_modules"
。
然后,您可以使用pm2 logs
来检查重新启动的应用程序日志。
更新 PM2
全局安装新最版本的 PM2:
npm install pm2@latest -g
然后更新内存中的 PM2
:
pm2 update
其他高级操作如启动文件 env 配置,负载均衡启动,性能监控等请参考官方文档快速开始 | PM2 中文网 (fenxianglu.cn)
命令列表
# Fork 模式
pm2 start app.js --name my-api # 程序名
# Cluster 模式
pm2 start app.js -i 0 # 将根据可用的 CPU 使用 LB 启动最大进程
pm2 start app.js -i max # 和上面一样,但是不推荐使用。
pm2 scale app +3 # Scales `app` up by 3 workers
pm2 scale app 2 # Scales `app` up or down to 2 workers total
# Listing
pm2 list # 显示所有进程状态
pm2 jlist # 以原始JSON格式打印进程列表
pm2 prettylist # 以美化的JSON格式打印进程列表
pm2 describe 0 # 显示指定进程的所有信息
pm2 monit # 监控所有进程
# Logs
pm2 logs [--raw] # 在流中显示所有进程日志
pm2 flush # 清空所有日志文件
pm2 reloadLogs # 重新加载所有日志
# Actions
pm2 stop all # 停止所有进程
pm2 restart all # 重启所有进程
pm2 reload all # 将 0s 宕机机时间重新加载(对于 NETWORKED 应用程序)
pm2 stop 0 # 停止指定进程id
pm2 restart 0 # 重启指定进程id
pm2 delete 0 # 将进程从pm2列表中删除
pm2 delete all # 将从pm2列表中删除所有进程
# Misc
pm2 reset <process> # 重置元数据(重启时间…)
pm2 updatePM2 # 在内存中更新pm2
pm2 ping # 确保pm2守护进程已经启动
pm2 sendSignal SIGUSR2 my-app # 向脚本发送系统信号
pm2 start app.js --no-daemon
pm2 start app.js --no-vizion
pm2 start app.js --no-autorestart