如何通过Forever模块检测应用程序的重启

时间:2013-04-12 12:16:31

标签: node.js

我有一个使用cluster和Forever的应用程序。我希望在关闭或重新启动应用程序之前保存工作人员的信息。所以我使用process.on('SIGINT'),这适用于CTRL + C.

但我坚持永远。是否有可能以某种方式检测到Forever重新启动了应用程序?有什么信号吗?

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

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

所以请在process.on('SIGKILL', onStop);添加process.on('SIGINT', onStop);,但请注意,之后会永久使用发送“SIGTERM”的kill https://github.com/nodejitsu/forever-monitor/blob/master/lib/forever-monitor/common.js#L45process.on('SIGTERM', onStop)也是如此。

答案 2 :(得分:0)

我建议在重新启动守护程序之前执行kill -s SIGUSR1 <pid>。可以通过process.on('SIGUSR1')轻松地在节点中捕获此信号。

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

答案 3 :(得分:0)

永远有一个选项--killSignal,你可以将它自定义为其他可记录的信号(如SIGINT),然后在你的应用程序中,使用process.on('SIGINT',...)来捕获它。有一个official example,console.log语句对信号处理程序没有影响,我认为这是一个bug,很快就会修复。