PM2 API

PM2 can be used programmatically, allowing to manage processes straight from the code.PM2可以编程使用,允许直接从代码管理流程。

Quickstart快速上手

Note: To release connection to PM2 and make your application auto exit, make sure to disconnect from pm2 with pm2.disconnect()注意:要释放与PM2的连接并使应用程序自动退出,请确保使用pm2.disconnect()断开与PM2的连接

First add PM2 as a dependency:首先添加PM2作为依赖项:

npm install pm2 --save

Then create a script called app.js and pm2-control.js containing this:然后创建一个名为app.js和pm2-control.js的脚本,其中包含以下内容:

const pm2 = require('pm2')

pm2.connect(function(err) {
  if (err) {
    console.error(err)
    process.exit(2)
  }

  pm2.start({
    script    : 'api.js',
    name      : 'api'
  }, function(err, apps) {
    if (err) {
      console.error(err)
      return pm2.disconnect()
    }

    pm2.list((err, list) => {
      console.log(err, list)

      pm2.restart('api', (err, proc) => {
        // Disconnects from PM2
        pm2.disconnect()
      })
    })
  })
})

API Methods方法

pm2.connect([no_daemon_mode], fn)

Connect to local PM2 or spawn a new PM2 instance.连接到本地PM2或生成新的PM2实例。

Param参数 Type类型 Default默认值 Description描述
[no_daemon_mode] boolean false if true, it will run an independant PM2 that will auto exit at end如果为真,它将运行一个独立的PM2,该PM2将在结束时自动退出
fn function   Callback回调

pm2.disconnect()

Disconnect from local PM2从本地PM2上断开

pm2.start(process, fn)

Start a process开始一个进程

Param参数 Type类型 Description描述
process string/object script path (relative) or object via options脚本路径(相对)或对象通过选项
fn function Callback回调

pm2.stop(process, fn)

Stop a process停止进程

Param参数 Type类型 Description描述
process string/number target process ID or Name目标进程ID或名称
fn function Callback回调

pm2.restart(process, [options], fn)

Restart a process重新启动进程

Param参数 Type类型 Description描述
process string/number target process ID or Name目标进程ID或名称
[options] object options (also add updateEnv: true to force update)(同时添加updateEnv:true以强制更新)
fn function Callback回调

pm2.reload(process, fn)

Reload a process重新加载进程

Param参数 Type类型 Description描述
process string/number target process ID or Name目标进程ID或名称
fn function Callback回调

pm2.delete(process, fn)

Delete a process删除进程

Param参数 Type类型 Description描述
process string/number target process ID or Name目标进程ID或名称
fn function Callback回调

pm2.killDaemon(fn)

Kills the pm2 daemon (same as pm2 kill). 杀死pm2守护进程(与pm2杀死相同)。Note that when the daemon is killed, all its processes are also killed. 请注意,当守护进程被终止时,其所有进程也将被终止。Also note that you still have to explicitly disconnect from the daemon even after you kill it.还要注意,即使在杀死守护进程之后,您仍然必须显式地断开与它的连接。

pm2.describe(process, fn)

Get all metadata from a target process从目标进程获取所有元数据

Param参数 Type类型 Description描述
process string/number target process ID or Name目标进程ID或名称
fn function Callback回调

pm2.list(fn)

Retrieve all processes managed with PM2检索使用PM2管理的所有流程

Advanced Methods先进的方法

pm2.sendDataToProcessId(packet)

Send data to target process.将数据发送到目标进程。

Param参数 Type类型 Description描述
packet.id number target process ID目标进程ID
packet.type string must be process:msg必须为process:msg
packet.topic boolean must be true必须为true
packet.data object object data that will be sent to target process将被发送到目标进程的对象数据

Data will be received by target process via:目标流程将通过以下方式接收数据:

process.on('message', function(packet) {})

pm2.launchBus(fn)

This allow to receive message from process managed with PM2.这允许从PM2管理的流程接收消息。

const pm2 = require('pm2')

pm2.launchBus(function(err, pm2_bus) {
  pm2_bus.on('process:msg', function(packet) {
    console.log(packet)
  })
})

Then from a process managed with PM2:然后从PM2管理的流程中:

process.send({
  type : 'process:msg',
  data : {
    success : true
  }
})

pm2.sendSignalToProcessName(signal, process, fn)

Send custom system signal to target process name向目标进程名称发送自定义系统信号

Param参数 Type类型 Description描述
signal string system signal name系统信号名称
process string target process Name目标进程名称
fn function Callback(err, process)

pm2.sendSignalToProcessId(signal, process, fn)

Send custom system signal to target process id向目标进程id发送自定义系统信号

Param参数 Type类型 Description描述
signal string system signal name
process number target process id
fn function Callback(err, process)

Process structure流程结构

When calling any of the above methods, a mutated process array is returned. 调用上述任何方法时,都会返回一个经过修改的进程数组。This object contains:此对象包含:

Examples例子

Send message to process向进程发送消息

pm2-call.js:

const pm2 = require('pm2')

pm2.connect(function() {
  pm2.sendDataToProcessId({
    // id of procces from "pm2 list" command or from pm2.list(errback) method
    id   : 1,

    // process:msg will be send as 'message' on target process
    type : 'process:msg',

    // Data to be sent
    data : {
      some : 'data'
    },

    topic: true
  }, function(err, res) {
  })
})

// Listen to messages from application
pm2.launchBus(function(err, pm2_bus) {
  pm2_bus.on('process:msg', function(packet) {
    console.log(packet)
  })
})

pm2-app.js:

process.on('message', function(packet) {
  process.send({
    type : 'process:msg',
    data : {
     success : true
    }
 });
});