2016-09-07 34 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

相關問題