不正经谈技术系列小码农养成记

大话 pm2 系列之花式启动(一)

2021-10-20  本文已影响0人  F_wind

警告:本文仅作为 PM2 入门级介绍指南,并无实现原理等深入内容的研究,PM2 深度用户请绕行!另外,如果文章内容存在过分夸张或者解释不合理的地方,敬请指(忽)正(略)!

前方有老司机出没,请系好安全带,赶紧上车。

一般来说,常规的启动方式有命令行启动和脚本启动两种方式。另外,还有异端邪教模式,比如使用 nodejs 程序实现子进程启动,或者 java 程序实现等,其实本质也还是命令行启动(什么异端邪教不存在的,纯属调侃哈),至于脚本启动内部如何实现,就有待大神们自行探索了。

命令行启动

  1. 默认启动
    权当是 pm2 界的 hello word 吧…
# 启动一个nodejs进程,进程名默认为nodejs文件名,默认为fork单进程模式
pm2 start app.js
  1. 自定义启动
    给狗子(应用程序)起个名字。
# 启动并自定义进程名
pm2 start app.js --name processNames
  1. 负载均衡
    硬核服务器(cpu 多核心),一行命令直接资源最大化,或者自定义化利用!
# 负载均衡(服务器只是满足双核及以上),max为默认最大cpu数,可以自定义
pm2 start app.js -i max
  1. 目录监听
    修改代码直接都不用重启了,一次部署,永久更新!傻瓜式的骚操作。
# 监听目录变化,默认不启动
pm2 start app.js --watch
  1. 携带参数启动
    含金钥匙(参数)出生的狗子。
# 携带test和100启动进程
pm2 start app.js -test -100

配置启动脚本

  1. 首先,编写我们的剧本(脚本)
{
    "apps": [{
        "name": "狗子1",
        "script": "./app1.js",
        "watch": true
    }, {
        "name": "狗子2",
        "script": "./app1.js",
        "watch": false
    }]
}
  1. 然后,一键!(其实还是命令行)这时,剧本里的狗子们批量呱呱坠地了。
pm2 start app.json

异端邪教

  1. Nodejs 实现
    没代码你说个…所以,直接上代码:
const child = require("child_process");

let cmd = child.spawn("pm2",["start","./app.js"])
cmd.stdout.on("data",function(data){
    // 正常输出
})
cmd.stderr.on("data",function(data){
    // 异常输出
})
cmd.on("exit",function(data){
    // 退出
})
  1. 其他实现
    上面的例子就是砖,感兴趣的同学,可以自行造玉!

先聊这么多吧,撒花,礼毕!散了散了。。。

上一篇下一篇

猜你喜欢

热点阅读