私はクラスタと永遠にアプリケーションを持っています。私は、シャットダウンまたはアプリケーションの再起動の前に、労働者からの情報を保存したい。だから私はprocess.on( 'SIGINT')を使用し、それはCtrl + Cのためにうまく動作します。Foreverモジュールによるアプリケーションの再起動の検出方法
しかし、私は永遠と付き合っています。アプリが何らかの理由でForeverによって再起動されたことを検出することは可能ですか?それについて何かシグナルがありますか?フォーエバー
私はクラスタと永遠にアプリケーションを持っています。私は、シャットダウンまたはアプリケーションの再起動の前に、労働者からの情報を保存したい。だから私はprocess.on( 'SIGINT')を使用し、それはCtrl + Cのためにうまく動作します。Foreverモジュールによるアプリケーションの再起動の検出方法
しかし、私は永遠と付き合っています。アプリが何らかの理由でForeverによって再起動されたことを検出することは可能ですか?それについて何かシグナルがありますか?フォーエバー
はSIGKILLがhttps://github.com/nodejitsu/forever-monitor/blob/master/lib/forever-monitor/monitor.js#L353
を参照してください使用していますので、その後永遠にそうprocess.on('SIGTERM', onStop)
だけでなく、「SIGTERM」を送信しkill
https://github.com/nodejitsu/forever-monitor/blob/master/lib/forever-monitor/common.js#L45を使用することに注意してくださいかかわらず、あなたのprocess.on('SIGINT', onStop);
にprocess.on('SIGKILL', onStop);
を追加します。
デモを再起動する前にkill -s SIGUSR1 <pid>
を実行することをお勧めします。この信号は、process.on('SIGUSR1')
によってノードに簡単に捕捉できます。
kill -s SIGUSR1 <pid>
forever restart test.js
この問題はかなり古いですが、それを見ていなかった人のために、最新の永遠のバージョンは--killSignalサポート(これは2013年12月に追加されている)ので、あなたは一例で使用し、この信号をキャッチすることができますprocess.on('SIGUSR2', func)
永遠に--killSignalオプションがあります。それを他のキャッチ可能なシグナル(SIGINTなど)にカスタマイズし、アプリでprocess.on( 'SIGINT'、...)を使用してキャッチします。 official exampleがありますが、console.logステートメントはシグナルハンドラには何の効果もありません。私はバグだと思っています。
'SIGKILL'はプロセスによって捕らえられません。 Nodeで試してみると、 'EINVAL'エラーが出ます。 – robertklep