Node.JS关机钩

问题描述:

是否可以截取默认kill信号并将其用作正常关机的命令?这是针对Solaris SMF的。有一个我发现的可停止服务的最简单方法是将:kill设置为关闭脚本,然后在Java中添加关闭挂接。在这种情况下,我想为Node.JS做。我应该怎么做?Node.JS关机钩

编辑:目的是

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

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

我唯一想到的就是使用信号事件。

http://nodejs.org/docs/v0.3.1/api/process.html#signal_Events

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

process.on('exit', function() { 
    console.log('About to exit.'); 
}); 

编辑:的,可以为你工作的替代,是不是杀的过程中,发送像SIGUSR1信号(kill -s SIGUSR1),然后侦听此信号(请参阅@masylum在另一个答案中发布的链接),并在完成或一段时间过后,以process.exit()明确终止。

+3

它的文档说*“的主要事件循环将不再是‘退出’回调完成后运行,所以定时器可能无法如期举行。” *。如果我理解正确,我将无法使用'setTimeout'或其他事件或回调。那是对的吗?如果这是正确的,我希望有一个回调,我可以延迟退出几秒钟,并允许其他回调完成。有这样的事吗? – 2011-03-22 20:23:20

+0

这不适用于Windows。我甚至应该尝试除了* nix之外的任何东西吗? ;-) – 2012-02-28 22:30:58