Merging/namespacing PM2 应用程序
Merging/namespacing PM2 apps
有PM2配置,/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
不是一个好的选择,因为它需要一些时间来找出配置文件路径,它可能在项目之间有所不同,甚至改变它的位置。
foo-*
应用能否合并为单个 foo
应用或以另一种合理的方式一起引用?
似乎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,包括小示例应用程序和配置。
pm2
自 2.4.0 起支持正则表达式,例如
pm2 restart /^foo-/
如果使用start
命令,记得提供生态系统文件作为第一个参数。
有PM2配置,/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
不是一个好的选择,因为它需要一些时间来找出配置文件路径,它可能在项目之间有所不同,甚至改变它的位置。
foo-*
应用能否合并为单个 foo
应用或以另一种合理的方式一起引用?
似乎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,包括小示例应用程序和配置。
pm2
自 2.4.0 起支持正则表达式,例如
pm2 restart /^foo-/
如果使用start
命令,记得提供生态系统文件作为第一个参数。