PM2 API

PM2 API

PM2はプログラム的に使用でき、コードから直接プロセスを管理できます。

クイックスタート

注記: PM2への接続を解放し、アプリケーションを自動終了させるには、pm2.disconnect()を使用してPM2から切断してください。

最初に、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から切断します。

APIメソッド

pm2.connect([no_daemon_mode], fn)

ローカルPM2に接続するか、新しいPM2インスタンスを生成します。

パラメータ デフォルト 説明
[no_daemon_mode] boolean false trueの場合、独立したPM2が実行され、スクリプトの終了時に自動的に終了します。
fn function   コールバック
  • noDaemonMode: 最初の引数にtrueが渡された場合、pm2はデーモンとして実行されず、関連するスクリプトが終了すると終了します。デフォルトでは、pm2はスクリプトの終了後も存続します。pm2が既に実行されている場合、スクリプトは既存のデーモンにリンクしますが、プロセスが終了すると終了します。

  • script - 実行するスクリプトのパス。
  • jsonConfigFile - optionsパラメータと同じオプションを含むことができるJSONファイルのパス。
  • errback(err,proc) - scriptが開始されたときに呼び出されるerrback。procパラメータはpm2プロセスオブジェクトになります。
  • options - 次のオプションを含むオブジェクト(これらのオプションの詳細な説明はこちら
    • name - 後続のコマンドでプロセスと対話する(例:再起動)ために使用できる任意の名前。拡張子を除いたスクリプト名(例:"testScript.js"の場合"testScript")がデフォルト。
    • script - 実行するスクリプトのパス。
    • args - スクリプトに渡す引数からなる文字列または文字列の配列。
    • interpreterArgs - インタープリタプロセスを呼び出す引数からなる文字列または文字列の配列。例:「–harmony」または[”–harmony”,”–debug”]。interpreterが「none」以外の場合にのみ適用されます(デフォルトは「node」)。
    • 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」)。形式はmoment表示形式です。
    • pid - (デフォルト:"~/.pm2/pids/app_name-id.pid")開始されたプロセスのpidを書き込むファイルへのパス。ファイルは上書きされます。pm2ではこのファイルは使用されないため、ユーザーはいつでも自由に操作または削除できます。プロセスが停止するかデーモンがキルされると、ファイルは削除されます。
    • minUptime - 成功した開始と見なされる前のスクリプトの最小稼働時間。
    • maxRestarts - minUptime未満で終了した場合にスクリプトが連続して再起動される最大回数。
    • maxMemoryRestart - 設定されており、scriptのメモリ使用量が設定された数値を超えた場合、pm2はscriptを再起動します。人間に分かりやすい接尾辞を使用します:「K」はキロバイト、「M」はメガバイト、「G」はギガバイトなど。例:「150M」。
    • killTimeout - (デフォルト:1600stopまたはrestartコマンドがSIGINTシグナルを発行した後、SIGKILLシグナルでスクリプトを強制的にキルするまで待機するミリ秒数。
    • restartDelay - (デフォルト:0)終了したスクリプトを再起動する前に待機するミリ秒数。
    • interpreter - (デフォルト:'node')スクリプトのインタープリター(例:「python」、「ruby」、「bash」など)。「none」値は、バイナリ実行ファイルとして「script」を実行します。
    • execMode - (デフォルト:'fork')「cluster」に設定すると、クラスタリングが有効になります(scriptの複数のインスタンスを実行)。詳細はこちら
    • instances - (デフォルト:1)作成するscriptのインスタンス数。exec_modeが「cluster」の場合にのみ関連します。
    • mergeLogs - (デフォルト:false)trueの場合、scriptのすべてのインスタンスのログファイルを1つのstderrログと1つのstdoutログにマージします。「cluster」モードでのみ適用されます。たとえば、pm2を介して開始された「test.js」の4つのインスタンスがある場合、通常は4つのstdoutログファイルと4つのstderrログファイルがありますが、このオプションをtrueに設定すると、stdoutファイルとstderrファイルは1つだけになります。
    • watch - trueに設定されている場合、scriptファイルの変更時にアプリケーションが再起動されます。
    • force (デフォルト: false) デフォルトでは、pm2は既に実行されていないスクリプトのみを開始します(スクリプトはアプリケーションへのパスであり、既に実行されているアプリケーションの名前ではありません)。forceがtrueに設定されている場合、pm2はそのスクリプトの新しいインスタンスを開始します。
    • autorestart (デフォルト true)。falseの場合、pm2は正常な完了またはプロセス失敗後に再起動を試行しません。
    • cron
    • executeCommand
    • write
    • sourceMapSupport
    • disableSourceMapSupport

ローカルPM2からの切断

pm2.start(process, fn)

プロセスの開始

パラメータ 説明
process string/object スクリプトパス(相対パス)またはオプションによるオブジェクト
fn function コールバック

pm2.stop(process, fn)

プロセスの停止

パラメータ 説明
process string/number ターゲットプロセスのIDまたは名前
fn function コールバック

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

プロセスの再起動

パラメータ 説明
process string/number ターゲットプロセスのIDまたは名前
[options] object オプション(updateEnv: trueを追加して強制的に更新することもできます)
fn function コールバック

pm2.reload(process, fn)

プロセスのリロード

パラメータ 説明
process string/number ターゲットプロセスのIDまたは名前
fn function コールバック

pm2.delete(process, fn)

プロセスの削除

パラメータ 説明
process string/number ターゲットプロセスのIDまたは名前
fn function コールバック

pm2.killDaemon(fn)

pm2デーモンをキルします(pm2 killと同じ)。デーモンがキルされると、そのすべてのプロセスもキルされることに注意してください。また、キルした後でも、デーモンから明示的に切断する必要があることにも注意してください。

pm2.describe(process, fn)

ターゲットプロセスからすべてのメタデータを取得します。

パラメータ 説明
process string/number ターゲットプロセスのIDまたは名前
fn function コールバック

pm2.list(fn)

PM2で管理されているすべてのプロセスを取得します。

高度なメソッド

pm2.sendDataToProcessId(packet)

ターゲットプロセスにデータを送信します。

パラメータ 説明
packet.id number ターゲットプロセスのID
packet.type string process:msgでなければなりません
packet.topic boolean trueでなければなりません
packet.data object ターゲットプロセスに送信されるオブジェクトデータ

データは、ターゲットプロセスで以下を使用して受信されます。

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(signal, process, fn)

ターゲットプロセスの名前にカスタムシステムシグナルを送信します。

パラメータ 説明
signal string システムシグナル名
process string ターゲットプロセスの名前
fn function コールバック(err, process)

pm2.sendSignalToProcessId(signal, process, fn)

ターゲットプロセスのIDにカスタムシステムシグナルを送信します。

パラメータ 説明
signal string システムシグナル名
process number ターゲットプロセスのID
fn function コールバック(err, process)

プロセス構造

上記のメソッドのいずれかを呼び出すと、変更されたプロセス配列が返されます。このオブジェクトには次のものが含まれています。

  • processDescription - プロセスに関する情報を格納したオブジェクトの配列。各オブジェクトには次のプロパティが含まれています。
    • name - 元のstartコマンドで指定された名前。
    • pid - プロセスのpid。
    • pm_id - pm2 Godデーモンプロセスのpid。
    • monit - 次を含むオブジェクト。
      • memory - プロセスが使用しているバイト数。
      • cpu - 現在、プロセスが使用しているCPUの割合。
    • pm2_env - プロセスの環境にあるパスの変数のリスト。これらの変数には次のものが含まれます。
      • pm_cwd - プロセスの作業ディレクトリ。
      • pm_out_log_path - stdoutログファイルのパス。
      • pm_err_log_path - stderrログファイルのパス。
      • exec_interpreter - 使用されているインタープリター。
      • pm_uptime - プロセスの稼働時間。
      • unstable_restarts - プロセスが経験した不安定な再起動回数。
      • restart_time
      • 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
    }
 });
});
このページに貢献する