我有8个javascripts,我从linux机器上的节点开始。
我想要的是当脚本完成并自行关闭时它会自动重启。
因此我创建了一个类似于
的start.shwhile true; do
node 1.js & node 2.js & node 3.js & node 4.js & node 5.js & node 6.js & node 7.js & node 8.js;
done
当我通过./start.sh启动它时,脚本会启动,但是一旦完成它们就不会自动重启。
有什么东西可以添加到脚本本身重启吗? 我试过了
while(true) {
//code//
}
但即使没有完成,也会重新启动脚本。
答案 0 :(得分:0)
使用async:
尝试此操作 var async = require('async');
var onejs = require('1.js');
var twojs = require('2.js');
var threejs = require('3.js');
// a simple recursive function that gets called once all functions
//are done executing, this should go on forever
function start() {
async.parallel([
onejs,
twojs,
threejs
], function done() {
start();
});
}
// remember your scripts should call async's callback,
// i am assuming you know you know how to use asyncjs.
答案 1 :(得分:0)
您的shell代码段有一些问题。
首先,您的每个node script.js
来电后跟&
来执行后续操作,除了最后一个。
在当前设置中,您将开始运行每个脚本,并等待第8个脚本完成。此时,无论上次执行是否结束,您都将循环并再次启动每个脚本。
虽然其他基于node.js的答案明显优越,但我认为您可以使用shell脚本做到这一点:
while true; do node 1.js; done &
while true; do node 2.js; done &
[...]
while true; do node 8.js; done &
这会在后台启动8个循环,因此您不必等待第一个循环完成以启动下一个循环。但是,每个循环在循环之前等待其脚本完成 这样,每个脚本启动都独立于其他脚本,但取决于它们之前的执行。