Node.JS Shutdown Hook

Bry*_*eld 3 solaris kill node.js shutdown-hook sigterm

是否可以拦截默认kill信号并将其用作正常关闭的命令?这适用于Solaris SMF.我找到一个可停止服务的最简单方法是设置:kill为关闭脚本,然后在Java中添加一个关闭钩子.在这种情况下,我想为Node.JS做.我该怎么办?

编辑:目的是

  1. 停止接收新请求.
  2. 给现有的回调几秒钟完成.
  3. 写一些信息给stderr.

@ alienhard的第一个建议是使用,process.on('exit'...但似乎我不能用这种方法完成2号.

ali*_*ard 9

有一个exit事件:http://nodejs.org/docs/v0.3.1/api/process.html#event_exit_

process.on('exit', function() {
  console.log('About to exit.');
});
Run Code Online (Sandbox Code Playgroud)

编辑:一个可能适合你的替代方案,而不是杀死进程,发送信号如SIGUSR1(kill -s SIGUSR1),然后监听此信号(请参阅@masylum在另一个答案中发布的链接),并在完成或一段时间后已过去使用process.exit()显式终止.

  • 文档说*"主要事件循环将在'退出'回调结束后不再运行,因此可能不会安排定时器."*.如果我理解正确,我将无法使用`setTimeout`或其他事件或回调.那是对的吗?如果这是正确的,我希望有一个回调,我可以延迟退出几秒钟,并允许其他回调完成.有这样的事吗? (3认同)