pm2进程管理-P(rocess) M(anagement)

PM2是一个后台保存的进程,一个守护进程,负责处理所有正在运行的进程。
我们将学习如何使用PM2管理流程并发现一个关键概念:进程列表(the process list)。

进程列表(the process list)

进程列表是所有正在运行的应用程序的注册位置。

使用下面几个命令来管理进程列表。

1
2
3
4
5
6
7
8
# start and add a process to your list
pm2 start app.js

# show your list
pm2 ls

# stop and delete a process from the list
pm2 delete app

当使用pm2 start app.js命令的时候,它做了2件事:

  • 在pm2进程列表里注册app进程
  • 后台启动app进程

在进程列表里的进程名跟启动的.js文件名相关,一般为文件名,不带扩展名。可以使用–name或者-n来修改进程名。

用法

可以通过进程列表中的进程名来操作进程。

1
2
3
4
5
6
7
8
# kill the process but keep it in the process list
pm2 stop app

# start the process again
pm2 start app

# both stop and start
pm2 restart app

也可以同时指定多个进程名

1
pm2 restart app1 app2 app3

或者使用正则表达式

1
pm2 restart /app/

保存进程列表

可以通过下面的命令保存和复活进程列表:

1
2
3
4
5
# save your list in hard disk memory
pm2 save

# resurrect your list previously saved
pm2 resurrect

进程列表会保存在$HOME/.pm2/dump.pm2。
也可以设置startup hook,在服务器重启的时候复活进程列表。

管理任何应用类型

pm2和其他编程语言兼容,使用此等价于:

1
2
3
4
5
6
7
8
9
{
".sh": "bash",
".py": "python",
".rb": "ruby",
".coffee": "coffee",
".php": "php",
".pl": "perl",
".js": "node"
}

如果启动的文件没有扩展名,则安装二进制文件启动。

假设启动一个phthon的demo:

1
pm2 start demo.py

如果要指定解释器的路径,在ecosystem文件中指定它:

1
2
3
4
5
6
7
module.exports = {
"apps" : [{
name: "script",
script: "./script.py",
interpreter: "/usr/bin/python",
}]
}

本地监测

使用pm2 monit命令可以查看本地监测,可以获取cpu使用,内存利用率,循环延迟,每分钟请求数。

可以使用PM2 Plus在Web仪表盘上来监测app应用。