如何检测由Forever模块重新启动的应用程序

我有一个集群和永远的应用程序。 我想在closures或重新启动应用程序之前保存工作人员的信息。 所以我使用process.on('SIGINT')并且对于CTRL + C正常工作。

但是我永远坚持着。 是否有可能检测到永久性的应用程序重新启动? 有没有关于这个的信号?

这个问题已经很老了,但是对于那些没有看到它的人来说,最新的版本支持–killSignal(这个已经在2013年12月被添加了),所以你可以用例子--killSignal=SIGUSR2捕获这个信号process.on('SIGUSR2', func)

永远使用SIGKILL请参阅https://github.com/nodejitsu/forever-monitor/blob/master/lib/forever-monitor/monitor.js#L353

所以添加process.on('SIGKILL', onStop); 到你的process.on('SIGINT', onStop); 不过请注意,之后永远使用kill https://github.com/nodejitsu/forever-monitor/blob/master/lib/forever-monitor/common.js#L45发送'SIGTERM',so process.on('SIGTERM', onStop)

我build议在重新启动守护进程之前先执行kill -s SIGUSR1 <pid>process.on('SIGUSR1')这个信号可以很容易地被节点捕获。

 kill -s SIGUSR1 <pid> forever restart test.js 

永远有一个选项–killSignal,你可以定制它到其他caughtable信号(如SIGINT),然后在你的应用程序,使用process.on('SIGINT',…)来抓住它。 有一个正式的例子 ,console.log语句在信号处理程序中没有任何作用,我认为这是一个错误,希望尽快修复。