合并/命名空间PM2应用程序

有PM2configuration,/ /home/foo/someconfig.json

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

大多数情况下,我想引用当前命名空间下的所有应用程序,例如

 pm2 restart foo 

而不是做

 pm2 restart foo-main foo-bar foo-baz 

Bash大括号扩展名无法使用,因为应用程序可能在Windows中运行。

pm2 restart /home/foo/someconfig.json不是一个好的select,因为它需要一些时间来找出configuration文件的path,它可能会不同项目之间,甚至改变它的位置。

可以将foo-*应用程序合并到单个的foo应用程序中,还是以其他合理的方式完全引用?

看起来pm2本身不支持基于通配符的重新启动,但是使用pm2编程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); }); } } }); }); 

为了使其function完整,还需要传递foo作为命令行参数(现在是硬编码)并处理退出(现在可用,但不会退出)。

这里是完整的代码示例 ,包括小示例应用程序和configuration。