监听node.js 进程退出的事件

luoyjx · 2016-06-23 11:53 · 1608次阅读

问题

当我需要在进程被杀死前做一些事情,比如清空某些缓存什么的,怎么办呢?

官方文档提供了不少信号事件。

https://nodejs.org/dist/latest-v4.x/docs/api/process.html#process_signal_events

但是我尝试过了只有这么两个能有效。

信号:

  • SIGINT
  • SIGTERM

SIGINT

这个信号只能监听到control+c/control+d的事件。 在部署的时候不可能这样去操作。一般都是pm2这类进程管理工具。

SIGTERM

这个我试过了,只有在linux上才行。但是也比没有好。

SIGTERM and SIGINT have default handlers on non-Windows platforms that resets the terminal mode before exiting with code 128 + signal number. If one of these signals has a listener installed, its default behavior will be removed (Node.js will no longer exit).

官方API说,这个监听之后,node.js是不会自己退出的,所以需要手动的退出。

大致需要这样写:

process.on('SIGTERM', function() {
	// todo sth
	process.exit(0);
});
收藏

暂无评论

登录后可以进行评论。没有账号?马上注册