PM2 JAVASCRIPT API

PM2 可以以编程方式使用,允许直接从代码管理进程。

快速开始

注意:要释放与 PM2 的连接并使您的应用程序自动退出,请确保与 pm2 断开连接pm2.disconnect()

首先添加 PM2 作为依赖:

npm install pm2 --save

然后创建一个名为 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()
      })
    })
  })
})
  • 这将生成或连接到本地 PM2
  • 然后以名称api启动 app.js
  • 显示所有使用 PM2 管理的应用程序
  • 然后重新启动名称为api 的应用程序
  • 并断开与 PM2 的连接

接口方法

pm2.connect([no_daemon_mode], fn)

连接到本地 PM2 或生成一个新的 PM2 实例。

参数 类型 默认 描述
[no_daemon_mode] 布尔值 错误的 如果为真,它将运行一个独立的 PM2,最后自动退出
fn 功能 打回来
noDaemonMode:如果第一个参数为 true,pm2 将不会作为守护进程运行,并会在相关脚本退出时死亡。默认情况下,pm2 在脚本退出后保持活动状态。如果 pm2 已经在运行,你的脚本将链接到现有的守护进程,但一旦你的进程退出就会死掉。

script- 要运行的脚本的路径。
jsonConfigFile- 可以包含与参数相同的选项的 JSON 文件的路径options。
errback(err,proc)script-启动时调用的 errback 。该proc参数将是一个pm2 进程对象。
options- 具有以下选项的对象(这些选项的附加说明在此处):
name- 一个任意名称,可用于稍后在其他命令中与进程交互(例如重新启动)。默认为不带扩展名的脚本名称(例如”testScript”for “testScript.js”)。
script- 要运行的脚本的路径。
args- 由要传递给脚本的参数组成的字符串或字符串数​​组。
interpreterArgs- 由参数组成的字符串或字符串数​​组,用于调用解释器进程。例如“–harmony”或[”–harmony”,”–debug”]。仅当interpreter不是“无”(默认为“节点”)时才适用。
cwd- 启动进程的工作目录。
output-(默认值:)”/.pm2/logs/app_name-out.log”要将 stdout 输出附加到的文件的路径。可以是与error.
error-(默认值:)”
/.pm2/logs/app_name-error.err”要将 stderr 输出附加到的文件的路径。可以是与output.
logDateFormat- 日志时间戳的显示格式(例如“YYYY-MM-DD HH:mm Z”)。格式为瞬间显示格式。
pid-(默认值:)”~/.pm2/pids/app_name-id.pid”写入启动进程的 pid 的文件路径。文件将被覆盖。请注意,pm2 不会以任何方式使用该文件,因此用户可以随时自由操作或删除该文件。当进程停止或守护进程终止时,该文件将被删除。
minUptime- 脚本在被认为成功启动之前的最短正常运行时间。
maxRestarts- 如果脚本退出的时间少于minUptime.
maxMemoryRestart- 如果设置和script的内存使用量达到配置的数量,pm2 将重新启动script. 使用人性化的后缀:“K”代表千字节,“M”代表兆字节,“G”代表千兆字节等。例如“150M”。
killTimeout-(默认值:)在or命令发出信号以使用信号强行终止脚本1600后等待的毫秒数。stoprestartSIGINTSIGKILL
restartDelay-(默认值:)0重新启动已退出的脚本之前等待的毫秒数。
interpreter-(默认:)’node’脚本的解释器(例如“python”、“ruby”、“bash”等)。值“none”将作为二进制可执行文件执行“脚本”。
execMode-(默认值:)’fork’如果设置为“集群”,将启用集群(运行多个实例script)。有关更多详细信息,请参见此处。
instances-(默认值:)1script创建多少个实例。exec_mode仅与“集群”相关。
mergeLogs-(默认值:)false如果为 true,则将所有实例的日志文件合并script到一个 stderr 日志和一个 stdout 日志中。仅适用于“集群”模式。例如,如果您有 4 个通过 pm2 启动的“test.js”实例,通常您会有 4 个 stdout 日志文件和 4 个 stderr 日志文件,但是如果将此选项设置为 true,您将只有一个 stdout 文件和一个 stderr 文件.
watch- 如果设置为true,应用程序将在文件更改时重新启动script。
force(默认:)false默认情况下,pm2 只会在脚本尚未运行时启动脚本(脚本是应用程序的路径,而不是已运行的应用程序的名称)。如果force设置为 true,pm2 将启动该脚本的一个新实例。
autorestart(默认true)。如果false,pm2 将不会在成功完成或进程失败后尝试重新启动它。
cron
executeCommand
write
sourceMapSupport
disableSourceMapSupport
断开与本地 PM2 的连接

pm2.start(进程,fn)
启动一个进程

参数 类型 描述
过程 字符串/对象 脚本路径(相对)或通过选项的对象
fn 功能 打回来
pm2.stop(进程,fn)
停止进程

参数 类型 描述
过程 字符串/数字 目标进程 ID 或名称
fn 功能 打回来
pm2.restart(进程,[选项],fn)
重启一个进程

参数 类型 描述
过程 字符串/数字 目标进程 ID 或名称
[选项] 目的 选项(还添加 updateEnv: true 以强制更新)
fn 功能 打回来
pm2.reload(进程,fn)
重新加载进程

参数 类型 描述
过程 字符串/数字 目标进程 ID 或名称
fn 功能 打回来
pm2.delete(进程,fn)
删除进程

参数 类型 描述
过程 字符串/数字 目标进程 ID 或名称
fn 功能 打回来
pm2.killDaemon(fn)
杀死 pm2 守护进程(与pm2 kill相同)。请注意,当守护进程被终止时,它的所有进程也会被终止。另请注意,即使在终止守护进程后,您仍然必须明确断开与守护进程的连接。

pm2.describe(过程,fn)
从目标进程获取所有元数据

参数 类型 描述
过程 字符串/数字 目标进程 ID 或名称
fn 功能 打回来
pm2.list(fn)
检索所有使用 PM2 管理的进程

高级方法
pm2.sendDataToProcessId(数据包)
将数据发送到目标进程。

参数 类型 描述
数据包.id 数字 目标进程号
数据包类型 细绳 必须是进程:消息
数据包.topic 布尔值 一定是真的
数据包 目的 将发送到目标进程的对象数据
目标进程将通过以下方式接收数据:

process.on(‘message’, function(packet) {})
pm2.launchBus(fn)
这允许从 PM2 管理的进程接收消息。

const pm2 = require(‘pm2’)

pm2.launchBus(function(err, pm2_bus) {
pm2_bus.on(‘process:msg’, function(packet) {
console.log(packet)
})
})
然后从一个由 PM2 管理的进程:

process.send({
type : ‘process:msg’,
data : {
success : true
}
})
pm2.sendSignalToProcessName(信号,进程,fn)
将自定义系统信号发送到目标进程名称

参数 类型 描述
信号 细绳 系统信号名称
过程 细绳 目标进程名称
fn 功能 回调(错误,处理)
pm2.sendSignalToProcessId(信号,进程,fn)
将自定义系统信号发送到目标进程 ID

参数 类型 描述
信号 细绳 系统信号名称
过程 数字 目标进程号
fn 功能 回调(错误,处理)
流程结构
当调用上述任何方法时,都会返回一个变异的进程数组。该对象包含:

processDescription - 包含有关进程信息的对象数组。每个对象都包含以下属性:
name - 原始启动命令中给出的名称。
pid - 进程的 pid。
pm_id - pm2 God 守护进程的 pid 。
monit - 包含以下内容的对象:
memory - 进程使用的字节数。
cpu - 当前进程使用的 CPU 百分比。
pm2_env - 进程环境中的路径变量列表。这些变量包括:
pm_cwd - 进程的工作目录。
pm_out_log_path - 标准输出日志文件路径。
pm_err_log_path - stderr 日志文件路径。
exec_interpreter - 使用的解释器。
pm_uptime - 进程的正常运行时间。
unstable_restarts - 进程经历的不稳定重启次数。
重启时间
status - “online”、“stopping”、“stopped”、“launching”、“errored”或“one-launch-status”
instances - 正在运行的实例数。
pm_exec_path - 在此进程中运行的脚本的路径。
例子
发送消息到进程
pm2-call.js:

const pm2 = require(‘pm2’)

pm2.connect(function() {
pm2.sendDataToProcessId({
// id of process 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'
},
id   : 0, // id of process from "pm2 list" command or from pm2.list(errback) method
topic: 'some topic'

}, 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
}
});
});

作者:Jeebiz  创建时间:2023-02-26 01:03
最后编辑:Jeebiz  更新时间:2023-02-26 22:38