nodejs关闭信号

在 Node.js 中,process.on('SIGTERM', ...)process.on('SIGINT', ...) 用于监听操作系统发送给 Node.js 进程的信号,以便在进程即将终止时执行一些清理操作。

  1. process.on('SIGINT', callback)

    • 监听 SIGINT 信号(Interrupt Signal)
    • 通常由用户在终端按下 Ctrl + C 时触发
    • 用于处理用户主动中断程序的情况
  2. process.on('SIGTERM', callback)

    • 监听 SIGTERM 信号(Termination Signal)
    • 通常由操作系统或进程管理器(如 systemdpm2 等)发送
    • 用于请求进程正常终止,是一种优雅关闭的信号

示例用法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 处理 Ctrl+C 中断
process.on('SIGINT', () => {
console.log('收到 SIGINT 信号,正在关闭程序...');
// 执行清理操作,如关闭数据库连接
cleanup();
process.exit(0);
});

// 处理终止信号
process.on('SIGTERM', () => {
console.log('收到 SIGTERM 信号,正在关闭程序...');
// 执行清理操作
cleanup();
process.exit(0);
});

function cleanup() {
// 关闭数据库连接、释放资源等操作
console.log('执行清理操作完成');
}

这两个信号的主要区别在于触发方式和使用场景,但通常会执行类似的清理逻辑,如关闭数据库连接、保存当前状态等,以确保程序优雅退出而不是强制终止。