进程管理

PM2是一个守护进程,处理你所有正在运行的进程。

我们会学习如何使用PM2管理进程,并且探索一个关键的概念:进程列表。

进程列表

所有正在运行的应用都会注册到进程列表。

用下面的命令管理你的进程列表:

# 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是,会执行两个操作:

注意,应用在进程列表中的名字,默认是脚本文件的名字,不包括扩展名(例如app.js在进程列表的名字是app),可以使用--name或者-n参数改变。

常规

一旦设置了进程列表,每个操作都通过进程名完成的。

# 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

可以指定多个进程:

pm2 restart app1 app2 app3

也可以使用正则表达式匹配进程的名字:

pm2 restart /app/

保存进程列表

使用下面的命令保存和复活你的进程列表:

# save your list in hard disk memory
pm2 save

# resurrect your list previously saved
pm2 resurrect

你的进程列表会保存到$HOME/.pm2/dump.pm2

你可以设置启动钩子,在机器重启是自动启动进程列表。

管理任意类型的应用

pm2与其他编程语言兼容,使用下面这种对应关系:

{
  ".sh": "bash",
  ".py": "python",
  ".rb": "ruby",
  ".coffee": "coffee",
  ".php": "php",
  ".pl": "perl",
  ".js": "node"
}

如果脚本文件没有扩展名,应用会作为二进制文件启动。

比如启动一个python脚本,使用:

pm2 start echo.py

如果要指定解释器的路径,在生态系统文件中指定它:

module.exports = {
  "apps" : [{
    name: "script",
    script: "./script.py",
    interpreter: "/usr/bin/python",
  }]
}

本地监控

PM2 Monit

本地监控工具可以让你获取到每个进程的CPU使用情况,内存使用情况,环路延迟或每分钟的请求数:

pm2 monit

下一步

日志管理