2017-03-27 5 views
12

PM2構成、/home/foo/someconfig.jsonマージ/名前空間PM2のアプリ

{ 
    "apps": [ 
     { 
      "name": "foo-main", 
      "script": "./index.js", 
     }, 
     { 
      "name": "foo-bar", 
      "script": "./bar.js" 
     }, 
     { 
      "name": "foo-baz", 
      "script": "./baz.js" 
     } 
    ] 
} 

があり、私は、例えば、現在の名前空間の下でのアプリケーションのすべてを参照したい時間のほとんどをアプリはWindowsで実行する可能性があるため、代わりに

pm2 restart foo-main foo-bar foo-baz 

バッシュブレース拡張を行うための

pm2 restart foo 

を使用することはできません。

Doing pm2 restart /home/foo/someconfig.jsonは、設定ファイルのパスを把握するのに時間がかかるため、プロジェクト間で異なる場合があり、場所を変更する場合もあります。

foo-*アプリを1つのfooアプリにマージするか、別の合理的な方法で完全に参照することはできますか?

答えて

6

pm2自体はワイルドカードベースの再起動をサポートしていないようですが、pm2 programmatic APIを使用して簡単なスクリプトを作成するのは複雑ではありません。ここで

のアイデアを実証作業スクリプトです:

var pm2 = require('pm2'); 

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

    pm2.list(function(err, processDescriptionList) { 
    if (err) throw err; 
    for (var idx in processDescriptionList) { 
     var name = processDescriptionList[idx]['name']; 
     console.log(name); 
     if (name.startsWith('foo')) { 
     pm2.restart(name, function(err, proc) { 
      if (err) throw err; 
      console.log('Restarted: '); 
      console.log(proc); 
     }); 
     } 
    } 
    }); 
}); 

それは完全に機能させるためには、コマンドライン引数(今ではハードコードされている)と、ハンドル出口としてfooを渡すことも必要です(今は動作しますが、終了時に終了しません)。

ここには、full code exampleがあります。小さなサンプルアプリや設定が含まれます。

+0

ありがとう、それはpm2 APIの良い使用です。余分な手間をかけることなく、グローバルな 'pm2'コマンドがメリットを持っているので、これを行うための従来の方法があることを望みます。 – estus