Node.JS关机钩
问题描述:
是否可以截取默认kill
信号并将其用作正常关机的命令?这是针对Solaris SMF的。有一个我发现的可停止服务的最简单方法是将:kill
设置为关闭脚本,然后在Java中添加关闭挂接。在这种情况下,我想为Node.JS做。我应该怎么做?Node.JS关机钩
编辑:目的是
- 停止接收新的请求。
- 给现有的回调几秒钟完成。
- 写一些信息给stderr。
@ alienhard的第一个建议是使用process.on('exit'...
,但似乎我不能用这种方法完成2号。
答
有一个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()明确终止。
它的文档说*“的主要事件循环将不再是‘退出’回调完成后运行,所以定时器可能无法如期举行。” *。如果我理解正确,我将无法使用'setTimeout'或其他事件或回调。那是对的吗?如果这是正确的,我希望有一个回调,我可以延迟退出几秒钟,并允许其他回调完成。有这样的事吗? – 2011-03-22 20:23:20
这不适用于Windows。我甚至应该尝试除了* nix之外的任何东西吗? ;-) – 2012-02-28 22:30:58