# SC114：第二次 SIGTERM 无法送达

> SC114（第二次 SIGTERM 无法送达）表示 repeatSignalAfterMs 触发时，工作已经结束。调低这个延迟，或者让测试请求运行得更久。

Source: https://shutdown.jscrate.dev/zh/docs/codes/sc114
Last updated: 2026-09-23

`SC114` 表示原来的测试请求还在进行时，shutdown-check 没能发出第二次 `SIGTERM`。要么是进程或请求先结束了，要么是操作系统拒绝了这个信号。

| | |
| --- | --- |
| 诊断码 | `SC114` (FAIL) |
| 阶段 | 启动与进行中的工作 |
| CLI 退出码 | 1 |
| 含义 | 设置了 `repeatSignalAfterMs`，但没能在工作仍在进行时发出第二次信号。 |
| 输出信息 | `Second SIGTERM could not be delivered while work was still active` |
| 首先检查 | 让测试请求运行得比 `repeatSignalAfterMs` 更久，或者调低这个延迟。 |

## 如何修复？

- 把 `repeatSignalAfterMs` 设得远小于测试请求的持续时间。
- 让可控的测试请求持续更久。
- 保持 `repeatSignalAfterMs` 小于 `shutdown.deadlineMs`。
- 检查第一次信号是否让进程立即退出。

```json title="shutdown-check.json"
{
  "shutdown": {
    "deadlineMs": 10000,
    "repeatSignalAfterMs": 500
  }
}
```

重复信号检查是可选的。如果你的进程管理器或运维人员可能多次发送 `SIGTERM`，就启用它。正确的信号处理函数在收到第二次信号时，不应切断进行中的工作。

## 如何确认已修复？

通过时，时间线中的 `signal repeated — SIGTERM` 出现在每个 `work request finished` 事件之前。之后请求必须正常结束，进程也必须以预期的退出码退出。

如果第二次信号送达了，请求却被中断，结果会变成 SC201。这时应把处理函数改成幂等的，而不是去掉重复信号检查。

## 相关内容

- [关闭配置](https://shutdown.jscrate.dev/zh/docs/configuration#shutdown)
- [编写幂等的 SIGTERM 处理函数](https://shutdown.jscrate.dev/zh/docs/guides/graceful-shutdown-nodejs)
- [SC201：请求被中断](https://shutdown.jscrate.dev/zh/docs/codes/sc201)
