发布于 ,更新于 

Node.js 使用 PM2 管理进程

执行 Node.js 的程序,需要使用命令行进行调用:

1
node  js-module-name

当 Ctrl + C 退出之后,或者关闭了终端之后,Node.js 的进程也随之被退出了。如果 Node.js 的程序中途出现了异常,也会退出进程。如果部署在服务器上面的 Node.js 应该需要以守护进程的方式进行启动的话,则需要借助一些工具才能完成这种操作。

PM2 就是一款 Node.js 应用的极佳的进程管理器。官方网址是: https://pm2.keymetrics.io/。 安装方法如下:

1
npm  install  -g  pm2

安装完毕之后,需要查看帮助,请输入:

1
pm2  -h

启动一个 Node.js 进程并守护,使用以下命令:

1
pm2  start  ex21.js

这时进程启动并进入后台管理,并输出下面进程信息。加上 --watch 参数在后面,意味着当应用程序发生异常时,pm2会帮你重启服务。

1
2
3
4
5
6
7
[PM2] Starting G:\mystudy\node\1\ex21.js in fork_mode (1 instance)
[PM2] Done.
┌─────┬─────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching
├─────┼─────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
0 │ ex21 │ default │ N/A │ fork │ 153320s0 │ online │ 0% │ 27.7mb │ o_o │ disabled │
└─────┴─────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

即使命令终端窗口关闭了,进程还是会在后台继续运行。以上信息中,可以看出,进程 ID 为:15332,这个进程在进程列表中的 ID 为 0。

结束一个进程,可以使用下面命令(以上面的进程为例子,命令中的 id 为列表中的 ID):

1
pm2  stop  0

如果要把列表中所有的进程都停止,则使用:

1
pm2  stop  all

查看完成进程列表,使用命令:

1
pm2  list
1
2
3
4
5
┌─────┬─────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
│ id │ name │ namespaceversionmodepiduptime │ ↺ │ statuscpumemuserwatching
├─────┼─────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
0ex21defaultN/Afork000stopped0% │ 0bo_odisabled
└─────┴─────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘

重启进程,则使用命令:

1
pm2  restart  0

重启所有进程,则使用命令:

1
pm2  restart  all

将进程从管理列表中删除,使用命令:

1
pm2  delete  0

将所有进程从管理列表中删除,使用命令:

1
pm2  delete  all