5

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

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

4

4 回答 4

3

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

于 2014-01-04T16:48:23.853 回答
0

我建议kill -s SIGUSR1 <pid>在重新启动你的守护进程之前做。这个信号很容易被 node by 捕获process.on('SIGUSR1')

kill -s SIGUSR1 <pid>
forever restart test.js
于 2013-04-22T13:31:58.427 回答
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) .

于 2013-04-12T12:30:43.940 回答
0

forever 有一个选项 --killSignal,您可以将其自定义为其他可捕获的信号(例如 SIGINT),然后在您的应用程序中,使用 process.on('SIGINT', ...) 来捕获它。有一个官方的例子,console.log 语句在信号处理程序中没有效果,我认为这是一个错误,希望尽快修复。

于 2014-01-09T02:25:31.200 回答