使用pm2管理你的nodejs进程

使用pm2管理你的nodejs进程

PM2 是一个具有内置负载均衡功能的 Node.js 应用程序的进程管理器。 它可以使 Node.js
应用程序永久保持运行状态,无需停机即可重新加载它们,并且很容易进行系统任务管理

Github

常用指令

全局安装 pm2

1
npm install pm2 -g

列举所有正在运行的应用

1
2
3
4
5
6
7
8
pm2 list

┌─────────────────────┬────┬──────┬────────┬───┬──────┬───────────┐
│ Name │ id │ mode │ status │ ↺ │ cpu │ memory │
├─────────────────────┼────┼──────┼────────┼───┼──────┼───────────┤
│ AppName │ 0 │ fork │ online │ 0 │ 0.2% │ 31.3 MB │
└─────────────────────┴────┴──────┴────────┴───┴──────┴───────────┘
Use `pm2 show <id|name>` to get more details about an app

运行应用

1
2
3
4
5
6
7
pm2 start app.js
┌─────────────────────┬────┬──────┬────────┬───┬─────┬───────────┐
│ Name │ id │ mode │ status │ ↺ │ cpu │ memory │
├─────────────────────┼────┼──────┼────────┼───┼─────┼───────────┤
│ index │ 0 │ fork │ online │ 0 │ 0% │ 6.8 MB │
└─────────────────────┴────┴──────┴────────┴───┴─────┴───────────┘
Use `pm2 show <id|name>` to get more details about an app

停止应用(通过应用名称)

1
2
3
4
5
6
7
8
9
pm2 stop app_name
[PM2] Applying action stopProcessId on app [index](ids: 1)
[PM2] [index](1) ✓
┌─────────────────────┬────┬─────────┬──────┬───────┬─────────┬─────────┬────────┬─────┬───────────┬───────┬──────────┐
│ App name │ id │ version │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │
├─────────────────────┼────┼─────────┼──────┼───────┼─────────┼─────────┼────────┼─────┼───────────┼───────┼──────────┤
│ index │ 0 │ N/A │ fork │ 0 │ stopped │ 9 │ 0 │ 0% │ 0 B │ xxxx │ disabled │
└─────────────────────┴────┴─────────┴──────┴───────┴─────────┴─────────┴────────┴─────┴───────────┴───────┴──────────┘
Use `pm2 show <id|name>` to get more details about an app

停止应用(通过应用 id)

1
2
3
4
5
6
7
8
pm2 stop id

[PM2] Applying action deleteProcessId on app [index](ids: 1)
[PM2] [index](1) ✓
┌─────────────────────┬────┬─────────┬──────┬───────┬────────┬─────────┬────────┬─────┬───────────┬───────┬──────────┐
│ App name │ id │ version │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ user │ watching │
├─────────────────────┼────┼─────────┼──────┼───────┼────────┼─────────┼────────┼─────┼─────────┴─────────┴──────┴───────┴────────┴─────────┴────────┴─────┴───────────┴───────┴──────────┘
Use `pm2 show <id|name>` to get more details about an app

停止所有应用

1
pm2 stop all

重启应用(通过应用名称)

1
pm2 restart app_name

重启应用(通过应用 id)

1
pm2 restart id

重启所有应用

1
pm2 restart all

删除应用(通过应用名称)

1
pm2 delete app_name

删除应用(通过应用 id)

1
pm2 delete id

删除所有应用

1
pm2 delete all

获取应用的详细信息(通过应用名称)

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
pm2 describe app_name

Describing process with id 0 - name AppName
┌───────────────────┬─────────────────────────────────────────────────────┐
│ status │ online │
│ name │ AppName │
│ version │ N/A │
│ restarts │ 0 │
uptime │ 13m │
│ script path │ /usr/local/bin/npm │
│ script args │ run dev │
│ error log path │ /home/username/.pm2/logs/AppName-error.log │
│ out log path │ /home/username/.pm2/logs/AppName-out.log │
│ pid path │ /home/username/.pm2/pids/AppName-0.pid │
│ interpreter │ node │
│ interpreter args │ N/A │
│ script id │ 0 │
exec cwd │ /home/username/appPath │
exec mode │ fork_mode │
│ node.js version │ 10.14.2 │
│ node env │ N/A │
│ watch & reload │ ✘ │
│ unstable restarts │ 0 │
│ created at │ 2019-08-02T01:28:20.709Z │
└───────────────────┴─────────────────────────────────────────────────────┘
Actions available
┌────────────────────────┐
│ km:heapdump │
│ km:cpu:profiling:start │
│ km:cpu:profiling:stop │
│ km:heap:sampling:start │
│ km:heap:sampling:stop │
└────────────────────────┘
Trigger via: pm2 trigger AppName <action_name>

Code metrics value
┌────────────────────────┬───────────┐
│ Heap Size │ 15.23 MiB │
│ Heap Usage │ 65.22 % │
│ Used Heap Size │ 9.94 MiB │
│ Active requests │ 0 │
│ Active handles │ 4 │
│ Event Loop Latency │ 0.73 ms │
│ Event Loop Latency p95 │ 1.88 ms │
└────────────────────────┴───────────┘
Divergent env variables from local env
┌────────┬───────────────────────────────┐
│ OLDPWD │ N/A │
│ PWD │ /home/username/appPath │
└────────┴───────────────────────────────┘

Add your own code metrics: http://bit.ly/code-metrics
Use `pm2 logs AppName [--lines 1000]` to display logs
Use `pm2 env 0` to display environement variables
Use `pm2 monit` to monitor CPU and Memory usage AppName

获取应用的详细信息(通过应用 id)

1
pm2 describe id

显示每个应用的 CPU 和内存占用情况

1
pm2 monit

使用 pm2 调用 npm 命令

1
pm2 start --name "AppName" npm -- run dev

--的意思是调用模块的内部命令,如 npm 的 run 命令

使用pm2管理你的nodejs进程

https://www.borgor.cn/posts/b32780d9.html

作者

Cyrusky

发布于

2019-08-02

更新于

2024-11-18

许可协议

评论