Javascript autorestart

时间:2016-04-27 10:26:10

标签: javascript linux node.js restart

我有8个javascripts,我从linux机器上的节点开始。

我想要的是当脚本完成并自行关闭时它会自动重启。

因此我创建了一个类似于

的start.sh
while 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//
}

但即使没有完成,也会重新启动脚本。

2 个答案:

答案 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个循环,因此您不必等待第一个循环完成以启动下一个循环。但是,每个循环在循环之前等待其脚本完成 这样,每个脚本启动都独立于其他脚本,但取决于它们之前的执行。