6

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

编辑:目的是

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

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

4

2 回答 2

13

有一个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() 显式终止。

于 2011-03-22T20:04:03.160 回答
5

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

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

于 2011-03-23T11:23:21.593 回答