Node.JS 关闭挂钩

发布于 2024-10-25 14:01:37 字数 329 浏览 7 评论 0原文

是否可以拦截默认的 kill 信号并将其用作正常关闭的命令?这是针对 Solaris SMF 的。我发现获得可停止服务的最简单方法是将 :kill 设置为关闭脚本,然后在 Java 中添加关闭钩子。在本例中,我想为 Node.JS 执行此操作。我该怎么做呢?

编辑:目的是

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

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

Is it possible to intercept the default kill signal and use it as a command for a graceful shutdown? This is for Solaris SMF. The easiest way to have a stoppable service that I have found is to set :kill as the shutdown script and then to add a shutdown hook in Java. In this case, I want to do it for Node.JS. How should I do it?

Edit: The purpose is to

  1. Stop receiving new requests.
  2. Give existing callbacks a few seconds to finish.
  3. Write some information to stderr.

@alienhard's first suggestion was to use process.on('exit'... but it seems that I would not be able to accomplish number 2 with this method.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

无人问我粥可暖 2024-11-01 14:01:37

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

There is an exit event: http://nodejs.org/docs/v0.3.1/api/process.html#event_exit_

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

Edit: An alternative that could work for you, is instead of killing the process, sending a signal like SIGUSR1 (kill -s SIGUSR1), and then listening for this signal (see link posted by @masylum in another answer) and after you are done or some time has elapsed explicitly terminate with process.exit().

随风而去 2024-11-01 14:01:37

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

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

The only thing that comes to my mind is using signal events.

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文