当前位置: 首页 > news >正文

【pm2 - sdk 集成到程序中,典型用法】

pm2作为一款进程管理神器,除了命令行的启动方式外,其还对应有sdk,集成到程序中,我们可以连接到已有或创建pm2的守护进程,与其进行交互,动态,编程式地控制程序的启停等。以下为示例:

示例

假设有个 http server程序,

//  server.js
let port = process.env.port ? process.env.port : 8000;
const http = require("node:http");
http.createServer((req, res) => {let workerPid = process.pid;res.writeHead(200);res.end(`hello world, I am worker ${workerPid}\n`);}).listen(port);

典型用法如下,

const pm2 = require("pm2");
// This will spawn or connect to local PM2
// Either connects to a running pm2 daemon (“God”) or launches and daemonizes one.
// 1. connect
pm2.connect(function (err) {if (err) {console.error(err);process.exit(2);}pm2.start({script: "server.js",name: "http-server",},function (err, apps) {if (err) {console.error(err);return pm2.disconnect();}// 2. listpm2.list((err, list) => {console.log(err, list);// 3. restartpm2.restart("http-server", (err, proc) => {// 4. disconnect// Disconnects from PM2pm2.disconnect();});});});
});

1,connect: 连接到 pm2 守护进程 或 启动一个新的 pm2 守护进程。
2,list: 获取当前 pm2 管理的所有进程列表。
3,restart: 重启指定的应用。
4,disconnect: 断开与 pm2 守护进程的连接, 注意断开后,启动的程序还在。

如果想这段程序退出时,对应启动pm2程序也退出,可以加上这段代码

// graceful exit
process.on("SIGINT", function () {pm2.stop("http-server", (err, proc) => {console.log(err, proc);// process.exitprocess.exit(0);});
});

相关文章:

  • 堆结构知识点复习——玩转堆结构
  • 当HR问你是否单身时,该怎么回答?
  • 高德地图之获取经纬度并且根据获取经纬度渲染到路线规划
  • Upstream最新发布2024年汽车网络安全报告-百度网盘下载
  • Unity 生成物体的几种方式
  • C数据结构:二叉树
  • 信号量和事件及队列补充
  • Linux-Web服务搭建面试题-1
  • esp32 idf开发中的常用命令
  • 网络故障排除-OSPF故障
  • 电脑找不到opencl.dll原因分析及5种详细的解决方法
  • 重生之 SpringBoot3 入门保姆级学习(02、打包部署)
  • 通关!游戏设计之道Day16
  • BFS解决最短路问题(详解)
  • C#控制台-输出输入、占位符
  • 78. Subsets
  • angular2 简述
  • axios 和 cookie 的那些事
  • canvas 五子棋游戏
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Redis 中的布隆过滤器
  • SOFAMosn配置模型
  • tensorflow学习笔记3——MNIST应用篇
  • vue-router 实现分析
  • vue自定义指令实现v-tap插件
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 从零开始在ubuntu上搭建node开发环境
  • 基于Android乐音识别(2)
  • 力扣(LeetCode)22
  • 前端路由实现-history
  • 驱动程序原理
  • 如何使用 JavaScript 解析 URL
  • 深入 Nginx 之配置篇
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 思否第一天
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 移动端 h5开发相关内容总结(三)
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • 昨天1024程序员节,我故意写了个死循环~
  • #HarmonyOS:Web组件的使用
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (js)循环条件满足时终止循环
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (SpringBoot)第七章:SpringBoot日志文件
  • (第一天)包装对象、作用域、创建对象
  • (二十三)Flask之高频面试点
  • (译) 函数式 JS #1:简介
  • .gitignore
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...