学习使用PM2管理nodejs进程

在项目中,偶尔对命令会忘记一下,所以在此记录下pm2的常用命令。

1. pm2是什么?
pm2 是一个带有负载均衡的Node应用的进程管理器, 它能够管理Node应用,还能够对应用的运行状态进行监控。

2. pm2 安装及使用

安装命令如下:

npm install pm2 -g

比如说 我在项目中有一个 app.js 启动程序,代码如下:

const Koa = require(‘koa‘);

const app = new Koa();

app.use(async (ctx, next) => {
  ctx.response.body = ‘hello world‘;
  await next();
});

app.listen(3000);
console.log(‘app started at port 3000...‘);

然后每次启动下该本地项目服务,我们需要 node app.js 这样启动下,如下所示:

然后在浏览器中访问 http://localhost:3000/ 就可以打印如下效果了:

但是现在我们有pm2了,我们可以使用pm2来管理我们的node应用进程进行管理。我们只需要运行 pm2 start app.js 即可;如下:

然后在浏览器中访问 http://localhost:3000/ 也一样能看到效果。

下面是pm2 常用的命令:

$ npm install pm2 -g          // pm2 命令安装
$ pm2 start app.js -i 2       // 后台运行pm2,启动2个app.js
$ pm2 start app.js --name xxx // 命名进程为xxx

比如如下所示:

$ pm2 list            // 显示所有进程状态
$ pm2 monit           // 监视所有进程
$ pm2 logs            // 显示所有进程日志
$ pm2 stop all        // 停止所有进程
$ pm2 restart all     // 重启所有进程
$ pm2 reload all      // 0秒停机重载进程
$ pm2 stop 0          // 停止指定的进程
$ pm2 restart 0       // 重启指定的进程
$ pm2 startup         // 产生init脚本,保持进程活着
$ pm2 delete 0        // 杀死指定的进程
$ pm2 delete all      // 杀死全部进程
$ pm2 web             // 监控所有被pm2管理的进程

运行进程的不同方式:

$ 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 --name xxxx  // 启动一个进程并把它命名为 xxxx
$ 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 // 启动并生成一个配置文件

原文地址:https://www.cnblogs.com/tugenhua0707/p/10230975.html

时间: 2024-10-16 07:21:55

学习使用PM2管理nodejs进程的相关文章

Linux学习笔记(5)-进程管理

进程简介 进程是正在执行的一个程序或命令,每一个进程都有自己的地址空间,并占有一定的系统资源.感性的认识,进程就是一个正在运行的程序 进程管理的作用 判断服务器的运行状态 查看系统中有哪些进程 杀死进程(很少用,一般会采用正常的关闭手段) 查看系统所有的进程 #ps aux #ps -le 输出信息各字段的含义 USER:进程是由哪个用户产生的 PID:进程的ID号 %CPU:进程占用CPU资源的百分比 %MEM:进程占用物理内存的百分比 VSZ:该进程占用虚拟内存的大小,单位KB RSS:该进

pm2使用 node 进程管理

1.问题 使用阿里云服务器时遇到一个问题,就是只能开一个命令窗口,加入运行node服务,只能起一个服务,不能启多个服务.pm2可以解决这个问题. 2.pm2简介 官网:https://pm2.keymetrics.io/docs/usage/quick-start/ pm2是一个进程管理工具,可以用它来管理你的node进程,并查看node进程的状态. (1)安装 $ npm install [email protected] -g # or $ yarn global add pm2 (2)启服

UNIX环境编程学习笔记(21)——进程管理之获取进程终止状态的 wait 和 waitpid 函数

lienhua342014-10-12 当一个进程正常或者异常终止时,内核就向其父进程发送 SIGCHLD信号.父进程可以选择忽略该信号,或者提供一个该信号发生时即被调用的函数(信号处理程序).对于这种信号的系统默认动作是忽略它. 在文档“进程控制三部曲”中,我们讲的第三部曲是使用 wait 函数来获取终止子进程的终止状态.那么,有几个问题我们这里需要详细的学习一下. 1. 父进程一定能够获取到子进程的终止状态吗?如果子进程在父进程调用 wait 函数前就终止了,怎么办? 2. 如果父进程没有获

Python学习第六天----Linux内存管理、进程管理、RPM包安装管理及源码安装软件

Linux内存管理.进程管理.RPM包安装管理及源码安装软件 一.交换分区     交换分区其实就相当于Windows系统下的虚拟内存的概念,当物理内存不够用的时候,由操作系统将硬盘的一块区域划分出来作为内存使用.具体使用方法如下:      [[email protected] ~]# fdisk -l 磁盘 /dev/sdb:16.1 GB, 16106127360 字节,31457280 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):5

使用pm2 管理你的node项目

主要特性: 内建负载均衡(使用Node cluster 集群模块) 后台运行 0秒停机重载,我理解大概意思是维护升级的时候不需要停机. 具有Ubuntu和CentOS 的启动脚本 停止不稳定的进程(避免无限循环) 控制台检测 提供 HTTP API 远程控制和实时的接口API ( Nodejs 模块,允许和PM2进程管理器交互 ) 测试过Nodejs v0.11 v0.10 v0.8版本,兼容CoffeeScript,基于Linux 和MacOS. 安装 npm install -g pm2 用

PM2 部署 nodejs API项目

PM2的主要特性: 内建负载均衡(使用Node cluster 集群模块) 后台运行 0秒停机重载,我理解大概意思是维护升级的时候不需要停机. 具有Ubuntu和CentOS 的启动脚本 停止不稳定的进程(避免无限循环) 控制台检测 提供 HTTP API 远程控制和实时的接口API ( Nodejs 模块,允许和PM2进程管理器交互 ) 安装 npm install -g pm2 用法 $ npm install -g pm2 命令行全局安装pm2 $ pm2 start app.js 或者

从Storm学习集群管理

简介 Storm是当前最流行的分布式实时计算平台,使用场景是根据Storm定义的接口规范编写一个实时处理流,然后提交到Storm平台处理,Storm平台解析该处理流,使其并行.分布式地在集群中运行,并附带相应的状态监控.本文主要描述Storm的集群管理这块的内容,处理流的相关接口逻辑规范不作涉及. Storm集群监控管理的目标是管理和监控用户提交的处理流作业(类似于Hadoop监控管理mr-job). Storm系统架构 Storm遵循经典的master-slave架构,nimbus节点即为ma

学习pthreads,管理线程的栈

进程的地址空间分成代码段,静态数据段,堆和栈段.线程栈的位置和大小是从它所属的进程的栈中切分出来的.每个栈必须足够大,以容纳所有对等线程的函数的执行以及它们将会调用的例程链.或许你会问为什么要进行线程栈的管理?因为栈的管理由系统自动管理.但是针对具体问题,有可能系统自动管理的栈不能满足运行的要求,这时对线程的栈的管理是必要的.本文分为三个部分,第一部分给出管理线程栈的代码示例,第二部分对代码进行讲解,第三部分给出运行结果. 一 代码示例 本例程利用线程的属性对象,获取栈的大小,并改变栈的大小.

JVM学习笔记-内存管理

第一章 内存分配 1. 内存区域. 方法区和堆(线程共享),程序计数器 , VM栈 和 本地方法栈(线程隔离). 1) java虚拟机栈:线程私有.描述的是java方法执行的内存模型:栈帧,用户存储 局部变量表,操作数栈,动态链接,方法出口等信息. 局部变量表在编译时即可完全确定!如果线程请求的栈深度大于 规定的深度,StackOverflowError. 2) 本地方法栈,类似. 3)堆:垃圾收集器管理的主要区域.线程共享. 4)方法区: 各个线程共享.存储:加载的类信息,常量,静态变量,即时