クラスターとフォーエバーを使用したアプリケーションがあります。アプリのシャットダウンまたは再起動の前にワーカーからの情報を保存したい。したがって、process.on('SIGINT') を使用すると、CTRL+C で問題なく動作します。
しかし、私は永遠に立ち往生しています。アプリが Forever によって再起動されたことを何らかの形で検出することは可能ですか? それについて何か信号はありますか?
クラスターとフォーエバーを使用したアプリケーションがあります。アプリのシャットダウンまたは再起動の前にワーカーからの情報を保存したい。したがって、process.on('SIGINT') を使用すると、CTRL+C で問題なく動作します。
しかし、私は永遠に立ち往生しています。アプリが Forever によって再起動されたことを何らかの形で検出することは可能ですか? それについて何か信号はありますか?
この問題はかなり古いものですが、見たことがない人のために、最新の永遠のバージョンは --killSignal をサポートしているため (これは 2013 年 12 月に追加されました)、例を使用して--killSignal=SIGUSR2
このシグナルをキャッチできます。process.on('SIGUSR2', func)
kill -s SIGUSR1 <pid>
デーモンを再起動する前に行うことをお勧めします。このシグナルは、 によってノードで簡単にキャッチできますprocess.on('SIGUSR1')
。
kill -s SIGUSR1 <pid>
forever restart test.js
Forever は SIGKILL を使用しますhttps://github.com/nodejitsu/forever-monitor/blob/master/lib/forever-monitor/monitor.js#L353を参照してください
したがって、その後は永遠に「SIGTERM」を送信するhttps://github.com/nodejitsu/forever-monitor/blob/master/lib/forever-monitor/common.js#L45を使用することに注意してprocess.on('SIGKILL', onStop);
ください。 .process.on('SIGINT', onStop);
kill
process.on('SIGTERM', onStop)