2017-03-27 7 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 
बजाय

pm2 restart foo-main foo-bar foo-baz 

बैश ब्रेस विस्तार करने का

नहीं किया जा सकता।

pm2 restart /home/foo/someconfig.json करना अच्छा विकल्प नहीं है, क्योंकि कॉन्फ़िगरेशन फ़ाइल पथ को समझने में कुछ समय लगता है, यह परियोजनाओं के बीच भिन्न हो सकता है और यहां तक ​​कि इसके स्थान को भी बदल सकता है।

foo-* ऐप्स को 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

संबंधित मुद्दे