logo头像
Snippet 博客主题

PM2简易使用手册

本文于 381 天之前发表,文中内容可能已经过时。

概述

PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控、自动重启、负载均衡等;

一.安装PM2

// 全局安装pm2,依赖node和npm

npm install -g pm2

二.PM2常用命令

1.启动命令

pm2 start app.js --watch -i 2

参数说明:

--watch:监听应用目录的变化,一旦发生变化,自动重启。如果要精确监听、不见听的目录,最好通过配置文件。
-i --instances:启用多少个实例,可用于负载均衡。如果-i 0或者-i max,则根据当前机器核数确定实例数目。
--ignore-watch:排除监听的目录/文件,可以是特定的文件名,也可以是正则。比如--ignore-watch="test node_modules "some scripts""
-n --name:应用的名称。查看应用信息的时候可以用到。
-o --output :标准输出日志文件的路径。
-e --error :错误输出日志文件的路径。
--interpreter :the interpreter pm2 should use for executing app (bash, python...)。比如你用的coffee script来编写应用。

2.重启

重启特定的应用。可以先通过pm2 list获取应用的名字(–name指定的)或者进程id:

pm2 restart app_name|app_id  

例:pm2 restart 0 //重启id为0的进程(下同)

pm2 restart appName //重启名字为appName的进程(下同)

重启所有应用:

pm2 restart all

3.停止

停止特定的应用。可以先通过pm2 list获取应用的名字(–name指定的)或者进程id:

pm2 stop app_name|app_id  

停止所有应用:

pm2 stop all  

4.删除:

删除特定的应用。可以先通过pm2 list获取应用的名字(–name指定的)或者进程id:

pm2 delete app_name|app_id  

关闭并删除所有应用 :

pm2 delete all  

5.查看进程状态:

pm2 list

6.查看某个进程信息:

[root@iZ94wb7tioqZ pids]# pm2 describe 0

Describing process with id 0 - name oc-server

status online
name string
id 0
path /data/file/qiquan/over_the_counter/server/bin/www
args
exec cwd /data/file/qiquan/over_the_counter/server
error log path /data/file/qiquan/over_the_counter/server/logs/app-err-0.log
out log path /data/file/qiquan/over_the_counter/server/logs/app-out-0.log
pid path /root/.pm2/pids/oc-server-0.pid
mode fork_mode
node v8 arguments
watch & reload
interpreter node
restarts 293
unstable restarts 0
uptime 87m
created at 2016-08-26T08:13:43.705Z

7.监控进程

监控每个 node 进程的 cpu 和内存使用情况(包括各种响应,错误信息):

pm2 monit  

8.显示所有进程的日志信息

pm2 logs  

9.监控运行这些进程的机器的状态

pm2 web  

三.配置PM2启动文件

pm2 启动的方式可以进行很多的扩展,比如设置环境,设置错误信息打印,设置输入信息打印等等高级功能。那么一条命令就不能完成这些任务,所有 pm2 提供了配置文件的方式来启动~

pm2.config.js:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// 名称任意,按照个人习惯来
module.exports = {
apps: [
{
name: "", // 应用名称
script: "./build/server.js", // 启动文件地址
cwd: "./", // 当前工作路径
watch: [
// 监控变化的目录,一旦变化,自动重启
"src",
"build",
],
ignore_watch: [
// 忽视这些目录的变化
"node_modules",
"logs",
"public",
],
node_args: "--harmony", // node的启动模式
env: { //我们可以在内部添加很多个参数变量,这样我们所使用的 process.env.XXX 就会对应发生变化,
NODE_ENV: "development", // 设置运行环境,此时process.env.NODE_ENV的值就是development
ORIGIN_ADDR: ""
},
env_production: {
NODE_ENV: "production",
},
out_file: "./logs/out.log", // 普通日志路径
error_file: "./logs/err.log", // 错误日志路径
merge_logs: true,
log_date_format: "YYYY-MM-DD HH:mm Z",
},
],
};

摘抄至PM2实用入门指南,了解更多==》:https://www.cnblogs.com/chyingp/p/pm2-documentation.html