使用nodejs实现守护进程


写一个一直运行永远不挂掉的程序是一件很难的事儿,至少一次性写成很难。但是为了不因为程序挂掉而耽误时间我们往往需要一个守护进程来看着程序是否挂掉,如果挂掉那么将程序重启,重启的同时还要收集挂掉的原因,这样我们的程序才会越来越健壮。

今天我遇到了这样的问题,如下是我使用nodejs实现的一个守护进程,

var spawn = require('child_process').spawn;

function start(){
    nw = spawn('./nw', ['book']);
	
    nw.on('close',function(code, signal){
        nw.kill(signal);
        nw = start();
    });
    nw.on('error',function(code, signal){
        nw.kill(signal);
        nw = start();
    });
    return nw;
};

start();

此端代码将调运外部的nw命令,当子进程退出或者出错的时候将子进程重启,程序写的简陋了些,仅仅提供一个思想。


另外我们知道,我们的程序往往是有状态的。比如我们写一段程序处理数据,如果程序重启那么需要能继续上一次处理的位置继续处理。



相关内容