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

もう1つのオプション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

関連する問題