nodejs使用pm2进行进程管理,自动重启,袒护其它命令行程序 |
您所在的位置:网站首页 › 宝塔自动重启 › nodejs使用pm2进行进程管理,自动重启,袒护其它命令行程序 |
pm2启动配置文件 pm2是守护nodejs进程后台运行的,异常停止后可以自动重启,并且也可以袒护其它第三方的命令行程序,比如php的命令行 { "name": "应用进程名称", "args": "传递给脚本的参数", "script": "启动的脚本路径", "exec_interpreter": "指定的脚本解释器", "exec_mode": "fork", "max_memory_restart": "100M", //其它参数 "watch": [ // 监控变化的目录,一旦变化,自动重启 "bin", "routers" ], "ignore_watch" : [ // 从监控目录中排除 "node_modules", "logs", "public" ], "watch_options": { "followSymlinks": false }, "error_file" : "./logs/app-err.log", // 错误日志路径 "out_file" : "./logs/app-out.log", // 普通日志路径 "env": { "NODE_ENV": "production" // 环境参数,当前指定为生产环境 } }name 脚本显示名称 args 脚本参数 script 脚本文件名称 exec_interpreter 使用的解析器 exec_mode 启动模式,fork为使用子进程启动,cluster 使用nodejs的cluster模块启动 max_memory_restart 进程占用内存超过时自动重启 使用示例后台运行一个php的socket程序,需要一直运行,所以需要使用pm2来守护进程,创建一个socket.json的配置文件,里面是数组格式可以启动多个 [{ "name": "php-socket", "args": "", "script": "./include/Socket.php", "exec_interpreter": "php.exe", "exec_mode": "fork", "max_memory_restart": "100M" }]然后cmd到当前目录执行 pm2 start socket.json查看运行详细进程已经运行啦,查看此进程的详细情况用下面命令后面的0就是上面显示的id,也可以使用 php-socket 任务名称在我的系统上面那个id不知道怎么回事显示成一个方框啦,应该是乱码啦 pm2 describe 0注意到里面的日志文件有好几个.error肯定是错误日志啦。out的就是命令行里的输出字符都在这里 查看输出日志pm2 logs 0主要特性:内建负载均衡(使用Node cluster 集群模块) 后台运行 0秒停机重载,我理解大概意思是维护升级的时候不需要停机.具有Ubuntu和CentOS 的启动脚本 停止不稳定的进程(避免无限循环) 控制台检测 提供 HTTP API 远程控制和实时的接口API ( Nodejs 模块,允许和PM2进程管理器交互 ) 测试过Nodejs v0.11 v0.10 v0.8版本,兼容CoffeeScript,基于Linux 和MacOS. 安装npm install -g pm2用法npm install pm2 -g # 命令行安装 pm2 pm2 start app.js -i 4 #后台运行pm2,启动4个app.js # 也可以把'max' 参数传递给 start # 正确的进程数目依赖于Cpu的核心数目 pm2 start app.js --name my-api # 命名进程 pm2 list # 显示所有进程状态 pm2 monit # 监视所有进程 pm2 logs # 显示所有进程日志 pm2 stop all # 停止所有进程 pm2 restart all # 重启所有进程 pm2 reload all # 0秒停机重载进程 (用于 NETWORKED 进程) pm2 stop 0 # 停止指定的进程 pm2 restart 0 # 重启指定的进程 pm2 startup # 产生 init 脚本 保持进程活着 pm2 web # 运行健壮的 computer API endpoint pm2 delete 0 # 杀死指定的进程 pm2 delete all # 杀死全部进程运行进程的不同方式:pm2 start app.js -i max # 根据有效CPU数目启动最大进程数目 pm2 start app.js -i 3 # 启动3个进程 pm2 start app.js -x #用fork模式启动 app.js 而不是使用 cluster pm2 start app.js -x -- -a 23 # 用fork模式启动 app.js 并且传递参数 (-a 23) pm2 start app.js --name serverone # 启动一个进程并把它命名为 serverone pm2 stop serverone # 停止 serverone 进程 pm2 start app.json # 启动进程, 在 app.json里设置选项 pm2 start app.js -i max -- -a 23 #在--之后给 app.js 传递参数 pm2 start app.js -i max -e err.log -o out.log # 启动 并 生成一个配置文件 #你也可以执行用其他语言编写的app ( fork 模式): pm2 start my-bash-script.sh -x --interpreter bash pm2 start my-python-script.py -x --interpreter python0秒停机重载:pm2 reload all这项功能允许你重新载入代码而不用失去请求连接。 注意:仅能用于web应用运行于Node 0.11.x版本运行于 cluster 模式(默认模式) 列出运行中所有任务pm2 list列出由pm2管理的所有进程信息,还会显示一个进程会被启动多少次,因为没处理的异常。 pm2 monit监视每个node进程的CPU和内存的使用情况。 配置说明name 应用名称; script 启动脚本路径; cwd 应用启动的路径; args 传递给脚本的参数; interpreter 指定的脚本解释器; interpreter_args 传递给解释器的参数; instances 应用启动实例个数,仅在cluster模式有效,默认为fork; exec_mode 应用启动模式,支持fork和cluster模式; watch 监听重启,启用情况下,文件夹或子文件夹下变化应用自动重启; ignore_watch 忽略监听的文件夹,支持正则表达式; max_memory_restart 最大内存限制数,超出自动重启; env 环境变量,object类型,如{"NODE_ENV":"production", "ID": "42"}; log_date_format 指定日志日期格式,如YYYY-MM-DD HH:mm:ss; error_file 记录标准错误流,$HOME/.pm2/logs/XXXerr.log),代码错误可在此文件查找; out_file 记录标准输出流,$HOME/.pm2/logs/XXXout.log),如应用打印大量的标准输出,会导致pm2日志过大; min_uptime 应用运行少于时间被认为是异常启动; max_restarts 最大异常重启次数,即小于min_uptime运行时间重启次数; autorestart 默认为true, 发生异常的情况下自动重启; cron_restart crontab时间格式重启应用,目前只支持cluster模式; force 默认false,如果true,可以重复启动一个脚本。pm2不建议这么做; restart_delay 异常重启情况下,延时重启时间; 参考文献Github地址 https://github.com/Unitech/pm2 官方文档 http://pm2.keymetrics.io/docs/usage/quick-start/ |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |