2016-09-07 91 views
0

我想使用NodeJS和NPM在此应用程序内重新启动我的应用程序。使用NodeJS重新启动当前实例

它不child_process工作:

var exec = require('child_process').exec; 
exec('npm restart', function(error, stdout, stderr) { 
    console.log('stdout: ' + stdout); 
    console.log('stderr: ' + stderr); 
    if (error !== null) { 
     console.log('exec error: ' + error); 
    } 
}); 
+0

你为什么需要重新启动? –

+0

我需要重新启动我的脚本,因为我正在编写脚本以使用'GIT'获取新版本的代码,但第一步是了解如何自己重新启动脚本... – tonymx227

回答

0

如果你的主线程死了,也没有办法通过自己复活了。

看看Nodemon重新启动脚本。

0

另一个选项:您可以使用forever npm模块来启动和监控应用程序。 所以重启功能这样,如果从API:

app.get('/restart', function (req, res, next) { 
    process.exit(1); 
}); 

或者,如果您使用的是集群的方法,你可以杀死孩子和叉子新所示为节点[结账集群文件下面,

cluster.on('exit', function (worker) { 
    logger.info('Worker ' + worker.id + ' died :(, starting another one.'); 
    cluster.fork(); 
}); 
+0

好的,在我的Ubuntu服务器上尝试PM2,但如何执行'process.exit(1);'后重新启动进程? – tonymx227

+0

我不确定pm2是否支持重新启动功能,因此我是永远推荐的,pm2需要从外部重新启动,据我所知。在pm2中,您可以查找信号并确保您的节点正常重新启动。如果永远会在节点看到它时立即重新启动节点,那么process.exit(1)将杀死节点并永远启动它。 – Mattony

+0

我使用pm2和pm2进行测试确实支持像永远一样的重启功能。我使用“/ restart”杀死了进程,并看到pm2重新启动它,您可以通过在每次重新启动后使用pm2启动应用程序并执行** pm2列表**来验证。您会注意到重新启动列会在每次重新启动后递增其值 – Mattony

相关问题