PM2命令使用方法介绍

发布于 / 分享 / 0 条评论


PM2是具有内置负载平衡器的Node.js应用程序的生产过程管理器。 它使您可以永久保持应用程序的活动状态,无需停机即可重新加载应用程序,并且可以方便常见的系统管理任务
在生产模式下启动应用程序非常简单:

$ pm2 start app.js

官方网站:http://pm2.keymetrics.io/
翻译自:https://github.com/Unitech/pm2
适用于Linux(稳定)&MacOSx(稳定)&Windows(稳定)。 所有Node.js版本都支持 从Node.js 0.12开始。

安装

$ npm install pm2 -g

在安装Node.js时,npm是一个内建CLI

启动应用程序

$ pm2 start app.js

现在,您的应用程序已被守护程序,监控并保持永久生效。

官方的Docker Image

Docker Hub PM2镜像:
PM2官方Docker Image
使用pm2-docker CLI:

FROM keymetrics/pm2:latest [...] CMD [ "pm2-docker", "start", "ecosystem.config.js" ] 

监视PM2和应用程序

要监视你的应用程序,只需输入 :

$ pm2 register

更多关于PM2监测

更新PM2

$ npm install pm2@latest -g  #安装最新的PM2版本
$ pm2 update #保存进程列表,退出旧的PM2并恢复所有进程

主要特点

命令概述

#常规
$ npm install pm2 -g #安装PM2
$ pm2 start app.js #启动,守护进程和自动重启应用程序(Node)
$ pm2 start app.py 	#启动,守护进程和自动重启应用程序(Python)
$ pm2 start npm  -  start #启动,守护进程并自动重新启动节点应用程序

#集群模式(仅适用于Node.js)
$ pm2 start app.js -i 4 #在集群模式下启动4个应用程序实例,它会负载平衡网络查询到每个应用程序
$ pm2 reload all#零秒停机重新加载
$ pm2 scale [app-name] 10 #将群集应用程序扩展到10进程

#进程监视
$ pm2 list #列出所有以PM2开始的进程
$ pm2 monit #显示每个应用程序的内存和CPU使用情况
$ pm2 show [app-name] #显示应用程序的所有信息

#日志管理
$ pm2 logs #显示所有应用程序的日志
$ pm2 logs [app-name] #显示特定应用程序的日志
$ pm2 logs --json #以JSON格式记录
$ pm2 flush
$ pm2 reloadLogs

#进程状态管理
$ pm2 start app.js --name= " api " #启动应用程序并将其命名为“api”
$ pm2 start app.js  -  -a 34 #启动应用程序并传递选项“-a 34”作为参数
$ pm2 start app.js --watch #重新启动应用程序的文件更改
$ pm2 start script.sh #启动bash脚本
$ pm2 start app.json #启动在app.json中声明的所有应用程序
$ pm2 reset [app-name] #重置所有计数器
$ pm2 stop all #停止所有应用程序
$ pm2 stop 0 #停止ID为0的进程
$ pm2 restart all #重新启动所有应用程序
$ pm2 gracefulReload all #以集群模式轻松地重新加载所有应用程序
$$ pm2 delete all #杀死和删除所有的应用程序
$ pm2 delete 0 #删除ID为0的应用程序

#启动/引导管理
$ pm2 startup #检测init系统,在启动时生成并配置pm2启动
$ pm2 save #保存当前进程列表
$ pm2 resurrect #恢复以前保存的进程
$ pm2 unstartup #禁用并删除启动系统

$ pm2 update #保存进程,杀死PM2并恢复进程
$ pm2 generate #生成一个示例json配置文件

#部署
$ pm2 deploy app.json prod setup #安装程序“prod”远程服务器
$ pm2 deploy app.json prod #更新“prod”远程服务器
$ pm2 deploy app.json prod revert 2 #将 “prod”远程服务器还原为2

#模块系统
$ pm2 module:generate [name] #生成名称为[name]的样本模块
$ pm2 install pm2-logrotate #安装模块(这里是一个日志轮换系统)
$ pm2 uninstall pm2-logrotate #卸载模块
$ pm2 publish #增量版本,git push和npm发布 

流程管理

一旦应用程序启动,您可以轻松地列出和管理它们:

列出所有运行的进程:

$ pm2 list

管理您的流程非常简单:

$ pm2 stop     <app_name|id|'all'|json_conf>
$ pm2 restart  <app_name|id|'all'|json_conf>
$ pm2 delete   <app_name|id|'all'|json_conf>

为了确保它重新评估在json_conf声明的环境变量,将它作为参数传递给它,如果有的话,也可以从你的json_conf选择你自定义的env名称:

$ pm2 restart  [--env ]

要获得有关特定流程的更多详细信息:

$ pm2 describe <id|app_name>

负载平衡和零秒停机重新加载

当使用-i 选项启动应用程序时,将启用集群模式 。

群集模式启动您的应用程序的实例,并在每个实例之间自动负载平衡HTTP / TCP / UDP。 这可以根据可用的CPU数量来提高整体性能。

由所有主要的Node.js框架和任何Node.js应用程序无缝支持,无需更改任何代码:

主要命令:

$ pm2 start app.js -i max  #启用load-balancer并启动'max'实例(cpu nb)
$ pm2 reload all           #零秒重新载入
$ pm2 scale   #增加/减少进程号码 

CPU /内存监视


监测所有已启动的程序:

$ pm2 monit

日志


实时显示指定进程或所有进程的日志。 标准,原始,JSON和格式化输出都可以。

$ pm2 logs ['all'|app_name|app_id] [--json] [--format] [--raw]

例子:

$ pm2 logs APP-NAME       #显示APP-NAME日志
$ pm2 logs --json         # JSON输出
$ pm2 logs --format       #格式输出
$ pm2 flush               #刷新所有日志
$ pm2 reloadLogs          #重新加载所有日志 

更多关于日志管理

启动脚本生成

PM2可以生成并配置一个启动脚本,以便在每次服务器重新启动时保持PM2和您的进程活动。
支持init系统,如:systemd(Ubuntu 16,CentOS,Arch),upstart(Ubuntu 14/12),launchd(MacOSx,Darwin),rc.d(FreeBSD)。

$ pm2 startup  #自动检测init系统+在服务器启动时生成并设置PM2启动
$ pm2 startup [platform] #手动指定启动系统,可以是:systemd,upstart,launchd,rcd
$ pm2 unstartup #在服务器启动时禁用并删除PM2引导

在重新启动时保存/冻结进程列表:

$ pm2 save

模块系统

PM2嵌入一个简单而强大的模块系统。 安装模块非常简单:

$ pm2 install < module_name > 

以下是一些PM2兼容模块(由PM2管理的独立Node.js应用程序):

pm2-logrotate 自动轮换PM2和管理的应用程序的日志
pm2-webshell 在浏览器中显示一个功能齐全的终端
pm2-server-monit 监视您的服务器运行状况
编写你自己的模块

Keymetrics监测


如果您使用PM2管理您的NodeJS应用程序,则Keymetrics可以轻松监控和管理跨服务器的应用程序。 随意尝试一下:
PM2的监控仪表板

转载原创文章请注明,转载自: 洪凯的博客-其其乐 » PM2命令使用方法介绍

Not Comment Found