当前位置: 首页 > 后端技术 > Node.js

常用的pm2命令

时间:2023-04-03 16:08:51 Node.js

废话少说。在学习Nodejs项目的时候,我使用了pm2作为生产环境的进程管理工具。最近服务器挂了,需要重启一些服务。我发现自己有些命令记得不是很清楚,所以在这里写了一篇文章帮助自己记忆和整理一下pm2的常用命令,以后有需要的可以查一下。常用命令进入bin目录启动:pm2startwww/pm2startapp.jspm2startapp.js--name="fx67ll"启动并命名为fx67ll如果没有name,可以用id代替namepm2startapp.js--watch在文件更改时自动重启应用程序。pm2startscript.sh启动bash脚本pm2list以查看所有启动的应用程序列表。pm2monit显示各个应用的CPU和CPU内存使用情况pm2show[app-id/app-name]显示指定应用的所有信息pm2log显示应用的日志信息pm2log[app-id/app-name]显示指定应用的日志信息pm2flush清除所有日志文件pm2stopall停止所有应用pm2stop[app-id/app-name]停止指定应用pm2restartall重启所有应用pm2restart[app-id/app-name]restart指定应用pm2deleteall关闭并删除所有应用pm2delete[app-id/app-name]删除指定应用pm2reset[app-id/app-name]重新设置重启次数pm2startup创建开机自启动命令pm2save保存当前应用列表pm2resurrect重新加载保存的应用列表pm2update保存进程,杀掉并重启进程,一般用于更新pm2版本pm2生态生成示例json配置文件更多命令请使用负载均衡模式(集群模式)参考pm2官方文档相关命令pm2startapp.js-in负载均衡模式(集群模式)启动n个app.js应用实例pm2reloadall重启所有处于负载均衡模式的应用(集群模式)下午2gracefulReloadallGracefulreloadallappsinclustermodepm2scale[app-id/app-name]10将指定应用扩展到10个实例,0秒停止并重新加载(集群模式下,服务可以不停机重启)pm2reloadapp.js重启所有进程,始终保持至少一个进程运行pm2gracefulReloadallgracefulreloadallapplicationsinclustermodepm2configurationfilegeneratesampleconfigurationfile//generateasamplejsonconfigurationfilepm2ecosystem//pm2initializationpm2initconfigurationitembasicclassname:进程名script:节点启动文件的路径cwd:项目所在目录args:通过命令行传递给节点启动文件的参数interpreter:编译器的绝对路径(默认节点)interpreter_args:传递给编译器的参数node_args:传递给node的参数高级类实例:进程数exec_mode:进程模式(cluster或fork)PS:cluster模式使用node的child_process模块??孵化多个子进程,主进程监听端口,子进程只与主进程通信,从而实现单端口多进程;通过轮换实现负载均衡watch:布尔值或文件数组,允许开启监听文件变化并重启ignore_watch:未监听的文件max_memory_restart:内存超过限制自动重启env:application默认环境变量env_in:theenvironment命令行可以传入的变量,覆盖默认环境变量不同idmerge_logs:同上控制流min_uptime:pm2认为进程在线的最短时间listen_timeout:如果app没有发送ready信号,间隔多长时间reloadkill_timeout:告诉进程关闭的间隔toforcingtheprocesstoshutdownwait_ready:是否等待进程发送就绪信号max_restarts:最大不稳定重启次数(unstable是指小于1s或者小于min_uptime的重启)restart_delay:进程下线后等待多久重启autorestart:是否开启自动重启实践中需要注意的配置项script:如果使用集群模式时,必须是启动文件的入口,不能通过npm启动。max_restarts:指不稳定重启,即小于1s或min_uptime的重启,只有结合min_uptime配置才会生效。listen_timeout:当处于集群模式时,该值必须大于一个进程启动所需的时间,否则在重新加载配置文件时服务会暂时不可用示例module.exports={apps:[{name:'API',//applicationnamescript:'app.js',//应用文件位置env:{PM2_SERVE_PATH:".",//静态服务路径PM2_SERVE_PORT:8080,//静态服务器访问端口NODE_ENV:'development'//启动默认模式},env_production:{NODE_ENV:'production'//使用生产模式pm2startecosystem.config.js--envproduction},instances:"max",//将应用分布在所有CPU核心上,可以是整数或负值watch:true,//监控模式output:'./out.log',//指定日志标准输出文件和位置error:'./error.log',//错误输出日志文件和位置,pm2安装pm2-logrotate进行拆分日志文件merge_logs:true,//集群情况下,可以合并日志log_type:"json",//日志类型log_date_format:"DD-MM-YYYY",//日志日期记录格式}],deploy:{production:{user:'node',//sshuserhost:'212.83.163.1',//sshaddressref:'origin/master',//GITremote/branchrepo:'git@github.com:repo.git',//gitaddresspath:'/var/www/production',//服务器文件路径post-deploy:'npminstall&&pm2reloadecosystem.config.js--envproduction'//部署后的动作}}};配置启动命令(package.json)#pm2-server项目的环境变量,目的是区分各个环境的应用启动路径#cross-envNODE_ENV=development#pm2启动命令#pm2startpm2-conf/ecosystem.config.js#传递给pm2的参数,--only,--env#--onlydetective--envtestcross-envNODE_ENV=developmentpm2startpm2-conf/ecosystem.config.js--onlydetective--envtestaboutpm2pm2什么是pm2(ProcessManager2)是一个内置负载均衡器的Node.js应用一个生产运行时和流程管理器,允许您让应用程序永远保持活动状态,在不停机的情况下重新加载它们,并促进常见的Devops任务。pm2特点后台运行:正常启动方式:nodeindex.js关闭终端结束进程,pm2可以后台运行,终端关闭不影响日志管理:应用日志保存在服务器的硬盘中~/.pm2/logs/loadbalancing:pm2可以通过创建共享同一个服务器端口的多个子进程来扩展你的应用程序,这样做还允许你以零秒停机时间重新启动你的应用程序终端监控:提供一个实时界面来监控你的应用程序在终端并检查应用程序健康状态(CPU使用率、内存使用量、请求/分钟等)SSH部署:自动部署,避免在所有服务器中一一使用ssh静态服务:支持静态服务器功能多平台支持:对于Linux(stable)和macOS(stable)和Windows(stable)集成管理:针对多进程、不同环境,可以统一配置,方便管理pm2安装。只需使用npm命令npminstallpm2。配置项参考npm方法。————pm2官方教程参考文档————pm2常用命令参考文档————pm2介绍和用户手册参考文档————pm2说明我是f??x67ll.com,如果您发现本文有错误,欢迎在评论区讨论指正,感谢阅读!如果喜欢这篇文章,欢迎访问我这篇文章的github仓库地址,并为我点个Star,谢谢~:)转发请注明参考文章地址,万分感谢!!!