# 工作流取消指南

查找关于 GitHub 为取消工作流运行而采取的步骤的信息。

取消工作流运行时，你可能正在运行使用与该工作流运行相关的资源的其他软件。 为了帮助你释放与该工作流运行相关的资源，了解 GitHub 为取消工作流运行而执行的步骤可能会有所帮助。

1. 要取消工作流运行，服务器将重新评估所有正在运行的作业的 `if` 条件。 如果条件评估为 `true`，作业将不会取消。 例如，条件 `if: always()` 评估为 true 时，作业会继续运行。 没有条件时，则等同于条件 `if: success()`，仅在上一步已成功完成时才会运行。
2. 对于需要取消的作业，服务器向包含需取消作业的所有运行器机器发送取消消息。
3. 对于正在继续运行的作业，服务器将重新评估未完成步骤的`if`条件。 如果条件评估为 `true`，则步骤继续运行。 可以使用 `cancelled` 表达式来应用 `cancelled()` 状态检查。 有关详细信息，请参阅“[对工作流和操作中的表达式求值](/zh/enterprise-server@3.22/actions/reference/workflows-and-actions/expressions#cancelled)”。
4. 对于需要取消的步骤，运行器计算机会将 `SIGINT/Ctrl-C` 发送到步骤的入口进程（对于 JavaScript 操作，为 `node`；对于容器操作，为 `docker`；在步骤中使用 `bash/cmd/pwd` 时，为 `run`）。 如果进程未在 7500 毫秒内退出，运行器将发送 `SIGTERM/Ctrl-Break` 到此进程，然后等待 2500 毫秒让进程退出。 如果该进程仍在运行，运行器会停止进程树。
5. 在 5 分钟的取消超时时间结束后，服务器将强制终止所有已标记为取消但仍在运行的作业和步骤。