【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);});
});

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/333582.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

酷开科技大屏营销,多元需求唤醒“客厅经济”

随着科技的发展和消费者习惯的变化,OTT大屏营销正逐渐成为客厅经济的新风向。OTT不仅改变了人们获取信息和娱乐的方式,也为品牌营销提供了新的机遇和挑战,OTT大屏营销已经成为客厅经济的重要组成部分。酷开科技通过其自主研发的智能电视操作系…

PHP框架 Laravel

现在因为公司需求,需要新开一个Laravel框架的项目,毫无疑问,我又被借调过去了,最近老是被借调,有点阴郁,不过反观来看,这也是好事,又可以复习和巩固一下自己的知识点,接下…

数组基础-笔记

数组是非常基础的数据结构,实现运用和理解是两回事 数组是存放在连续内存空间上的相同类型的数据的集合 可以方便的通过下表索引的方式获取到下标下对应的数据。 举一个字符数组的例子: 注意两点: 数组下标从0开始 数组内存空间的地址是连…

yarn dev启动项目时遇到的问题

用yarn dev启动项目的时候,遇到了如下问题: 这个时候,我们可以这样解决:用nvm list 看下已安装的node版本,用nvm use切换一下node版本,当然前提是你已经安装了nvm。

C++: 二叉搜索树及实现

目录 一、二叉搜索树的概念 二、二叉搜索树的操作 2.1插入 2.2删除 1.有左子树,无右子树 2.有右子树,无左子树 3.有左子树和右子树 三、二叉搜索树的实现 要点 前言:为了学习map和set,需要先学二叉搜索树作为铺垫。 一、…

[论文笔记]Chain-of-Thought Prompting Elicits Reasoning in Large Language Models

引言 今天带来思维链论文 Chain-of-Thought Prompting Elicits Reasoning in Large Language Models的笔记。 作者探索了如何通过生成一系列中间推理步骤的思维链,显著提升大型语言模型在进行复杂推理时的能力。 1 总体介绍 语言模型的规模扩大已被证明能够带来…

[数据集][目标检测]伤口检测数据集VOC+YOLO格式2760张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2760 标注数量(xml文件个数):2760 标注数量(txt文件个数):2760 标注…

课时138:变量进阶_变量实践_综合案例

2.1.3 综合案例 学习目标 这一节,我们从 免密认证、脚本实践、小结 三个方面来学习 免密认证 案例需求 A 以主机免密码认证 连接到 远程主机B我们要做主机间免密码认证需要做三个动作1、本机生成密钥对2、对端机器使用公钥文件认证3、验证手工演示 本地主机生成…

调整GIF图大小的方法是什么?分享4个

调整GIF图大小的方法是什么?在数字化时代,GIF以其独特的动图魅力,成为了网络交流中不可或缺的一部分。无论是社交媒体、博客文章还是工作汇报,一个恰到好处的GIF图往往能有效吸引观众的注意,传递信息,但过大…

YOLOv8+PyQt5面部表情检测系统完整资源集合(yolov8模型,从图像、视频和摄像头三种路径识别检测,包含登陆页面、注册页面和检测页面)

1.资源包含可视化的面部表情检测系统,基于最新的YOLOv8训练的面部表情检测模型,和基于PyQt5制作的可视化面部表情检测系统,包含登陆页面、注册页面和检测页面,该系统可自动检测和识别图片或视频当中出现的八类面部表情&#xff1a…

3D开发工具HOOPS在BIM系统中的应用

建筑信息模型是一种革命性的建筑设计、施工和管理方法。它通过创建和利用数字信息来优化建筑项目的设计、施工和运营过程。在这个过程中,3D开发工具HOOPS扮演着至关重要的角色,为BIM系统提供了强大的技术支持和丰富的功能。HOOPS中文网http://techsoft3d…

ThreadLocal简介

Thread类中,有个ThreadLocal.ThreadLocalMap 的成员变量。 ThreadLocalMap内部维护了Entry数组,每个Entry代表一个完整的对象,key是ThreadLocal本身,value是ThreadLocal的泛型对象值 public void set(T value) {Thread t Thread…

前端开发之xlsx的使用和实例,并导出多个sheet

前端开发之xlsx的使用和实例 前言效果图1、安装2、在页面中引用3、封装工具类(excel.js)4、在vue中使用 前言 在实现业务功能中导出是必不可少的功能,接下来为大家演示在导出xlsx的时候的操作 效果图 1、安装 npm install xlsx -S npm inst…

Android HAL到Framework

一、为什么需要Framwork? Framework实际上是⼀个应⽤程序的框架,提供了很多服务: 1、丰富⽽⼜可扩展的视图(Views), 可以⽤来构建应⽤程序,它包括列表(lists),⽹格&am…

代码随想录算法训练营第20天 |● 654.最大二叉树 ● 617.合并二叉树 ● 700.二叉搜索树中的搜索 ● 98.验证二叉搜索树

文章目录 前言654.最大二叉树思路方法一 递归法方法一2 老师的优化递归法 617.合并二叉树思路方法一 递归法方法二 迭代法 700.二叉搜索树中的搜索思路方法一 递归法方法二 迭代法 98.验证二叉搜索树思路方法一 使用数组方法二 不使用数组代码注意点: 方法二 使用双…

SecureCRT for Mac注册激活版:专业终端SSH工具

SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件。 SecureCRT支持SSH,同时支持Telnet和rlogin协议。SecureCRT是一款用于连接运行包括Windows、UNIX和VMS的理想工具。通过…

零售EDI:Target DVS EDI项目案例

Target塔吉特是美国一家巨型折扣零售百货集团,与全球供应商建立长远深入的合作关系,目前国内越来越多的零售产品供应商计划入驻Target。完成入驻资格审查之后,Target会向供应商提出EDI对接邀请,企业需要根据指示完成供应商EDI信息…

Vue学习笔记3——事件处理

事件处理 1、事件处理器(1)内联事件处理器(2)方法事件处理器 2、事件参数3、事件修饰符 1、事件处理器 我们可以使用v-on 指令(简写为)来监听DOM事件,并在事件触发时执行对应的JavaScript。 用法: v-on:click"me…

[自动驾驶技术]-6 Tesla自动驾驶方案之硬件(AI Day 2021)

1 硬件集成 特斯拉自动驾驶数据标注过程中,跨250万个clips超过100亿的标注数据,无论是自动标注还是模型训练都要求具备强大的计算能力的硬件。下图是特斯拉FSD计算平台硬件电路图。 1)神经网络编译器 特斯拉AI编译器主要针对PyTorch框架&am…

【面试必看】Java并发

并发 1. 线程 1. 线程vs进程 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。 系统运行一个程序即是一个进程从创建,运行到消亡的过程。在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进…