# SC101：服务在就绪前退出

> SC101（服务在就绪前退出）表示就绪检查通过之前，你的命令崩溃、退出或没能启动。先看 stderr，再修正启动命令。

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

`SC101` 表示服务在就绪检查通过之前就退出了，或者根本没能启动。检查没有发起测试请求，也没有发送 `SIGTERM`。

| | |
| --- | --- |
| 诊断码 | `SC101` (FAIL) |
| 阶段 | 启动与进行中的工作 |
| CLI 退出码 | 1 |
| 含义 | 就绪检查路由响应之前，启动的进程已经退出，或者没能启动。 |
| 输出信息 | `Service exited before becoming ready: <error>`<br>`Service exited before becoming ready` |
| 首先检查 | 查看捕获的 stderr：可能是缺少构建产物、`command` 中的路径错误、缺少环境变量，或者启动时崩溃。 |

## 去哪里找原因？

先看输出末尾的 `Service stderr`。常见的报错有：缺少构建产物、环境变量无效、语法错误，或者地址已被占用。

另外检查：

- `command` 指向的可执行文件和入口文件确实存在。
- `cwd` 是命令需要的目录。
- 测试前已经构建好应用。
- `env` 中包含所有必需的环境变量。
- 进程没有转到后台运行，导致启动器先退出。

优先使用直接的命令，例如 `["node", "dist/server.js"]`。包管理器脚本和 shell 包装进程可能掩盖真实的退出，也可能不转发信号。

## 如果进程一直存活，却始终没有就绪怎么办？

这种情况对应 [SC100](https://shutdown.jscrate.dev/zh/docs/codes/sc100)。检查配置的 URL、就绪检查路径、预期状态码和启动超时。

## 如何确认已修复？

在配置的 `cwd` 下运行配置的命令，确认进程能持续运行。然后运行 shutdown-check，确认 `process launched` 和 `service ready` 都出现了。

如果命令在你的 shell 里能运行，在测试中却不行，对比两边的环境变量和相对路径。shutdown-check 直接启动可执行文件，所以不会加载 shell 别名或 shell 启动文件。

## 相关内容

- [配置 `command`、`cwd` 和 `env`](https://shutdown.jscrate.dev/zh/docs/configuration#command-cwd-and-env)
- [SC100：服务一直未就绪](https://shutdown.jscrate.dev/zh/docs/codes/sc100)
- [故障排查](https://shutdown.jscrate.dev/zh/docs/troubleshooting)
