停止或终止正在运行的作业
调用工作空间作业 (例如 plan,apply 或 destroy) 后,您可能想要停止正在运行的作业或停止资源供应。 在停止或取消长时间运行的作业时,建议首先检查作业日志以确定作业是否实际卡住并且需要停止,或者是否正在执行需要时间才能完成的长时间运行的操作。
Schematics 提供了一些选项,以允许用户按停止操作的即时性和影响顺序 (gracefully) stop,force-stop 或 terminate 运行作业。
停止作业类型
此表提供了停止作业类型的列表:
| 类型 | 描述 |
|---|---|
stop |
向正在运行的 Terraform 命令发送中断信号。 这将执行与独立运行 Terraform 时相同的功能,其中 interrupt 是使用 cntl-C 或类似于 Terraform 发送的。 可以多次发送中断信号以通知 Terraform 停止。 Terraform 尝试在任何正在执行的资源操作完成并清除后停止正在运行的命令 (plan,apply,delete)。Schematics 等待命令完成。 在命令停止或完成后,将收集并保存状态和日志文件。 |
force-stop |
向正在运行的 Terraform 命令发送杀死信号。 如果您希望在看到停止命令 (中断) 未停止该命令后终止 Terraform 命令,请使用此命令。 可以根据需要多次发送 force-stop,直到命令完成并停止作业为止。 如果它能够响应 kill 信号,Terraform 会立即停止运行命令和资源操作,并进行清理。 在命令停止或完成后,将收集并保存状态文件和日志文件。 |
terminate |
如果先前操作失败,请立即终止 Schematics 作业。 作业标记为 STOPPED,工作空间已解锁。 将保留日志和 statefile 的任何先前保存的副本。 当作业终止时,将终止该作业,而不会在结束时单独收集任何文件。 此选项可能会导致日志文件和最新 statefile 更新的数据丢失,应谨慎使用。 |
在作业停止之前,您可以发送任意数目的这些停止信号。 通常,发送的信号不应超过三个。 如果 Terraform 未响应 stop 请求 (中断信号),那么您可以始终使用 force-stop。 如果 force-stop 由于作业中的某个问题而未响应,那么您始终可以 terminate 要阻止的作业。
取消作业
如果作业处于 pending 状态,那么任何类型的停止请求都会导致作业取消。 如果作业处于 pending 状态,那么 Cancel 按钮会显示,此时可以直接取消该作业。 “取消”将从暂挂队列中除去作业。 如果同时启动 plan,apply 或 destroy 执行,那么这将成为到 Terraform 的停止 (中断) 信号。
使用 UI 停止正在运行的作业
您可以执行以下步骤以使用控制台停止正在运行的工作空间作业。
-
从 工作空间仪表板中,选择与正在运行的作业相关的工作空间。
您可以在计划,应用或销毁执行期间停止或取消正在运行的作业。
-
单击 作业 选项卡以查看 停止,强制停止,终止和 取消 按钮。
停止作业选项 按钮 描述 停止 如果作业处于暂挂状态,那么从暂挂队列中除去该作业。 否则,向 Terraform 命令发送中断信号。 强制停止 向正在运行的 Terraform 命令发送杀死信号。 终止 终止 Schematics 作业,并将该作业标记为 STOPPED,然后解锁工作空间。 应谨慎使用此命令,因为它可能会导致数据丢失。 取消 如果作业处于 pending状态,那么可以直接取消该作业时,将显示Cancel按钮。 “取消”将从暂挂队列中除去作业。 如果同时启动plan,apply或destroy执行,那么这最终将成为 Terraform 执行的中断信号。 -
在 输入选项以确认 文本框中输入
<option>名称。 -
单击 确认选项 按钮。
使用 CLI 停止正在运行的作业
停止正在运行的 IBM Cloud Schematics 工作空间作业。
语法
ibmcloud schematics workspace job stop --id WORKSPACE_ID --job-id JOB_ID [--stop] [--force-stop] [--terminate] [--no-prompt]
命令选项
| 标志 | 必需/可选 | 描述 |
|---|---|---|
--id 或 -i |
必需 | 要更新的工作空间标识。 |
--job-id 或 --jid |
必需 | 职位编号。 |
--stop |
可选 | 如果作业处于暂挂状态,那么从暂挂队列中除去该作业。 否则,向 Terraform 命令发送中断信号。 |
--force-stop 或 --fs |
可选 | 向引擎中的Terraform执行发送终止信号,试图立即停止执行。 |
--terminate 或 -t |
可选 | 突然终止引擎,将作业标记为已停止,并解锁工作空间。 未使用此标志保存数据。 |
--no-prompt |
可选 | 设置此标志以在不使用交互方式的情况下运行命令。 |
示例
ibmcloud schematics workspace job stop --id <WORKSPACE_ID> --stop --job-id <JOB_ID>
ibmcloud schematics workspace job stop --id <WORKSPACE_ID> --force-stop --job-id <JOB_ID>
ibmcloud schematics workspace job stop --id <WORKSPACE_ID> --terminate --job-id <JOB_ID>
通过 API 停止正在运行的作业
您可以使用以下 cURL 命令来停止 IBM Cloud Schematics 工作空间的正在运行的作业。
停止运行作业的语法
-
设置 REST 客户机 以执行 Schematics API。
-
使用语法和示例来停止正在运行的作业。
语法
curl -X DELETE https://schematics.cloud.ibm.com/v1/workspaces/<wks_id>/actions/{job_id}?signal=interrupt -H "Authorization: <iam_token>"示例
curl -X DELETE https://schematics.cloud.ibm.com/v2/jobs/{job_id}?signal=interrupt -H "Authorization: <iam_token>" -
使用此示例来
force-stop正在运行的作业。示例
curl -X DELETE https://schematics.cloud.ibm.com/v1/workspaces/<wks_id>/actions/{job_id}?signal=force-stop -H "Authorization: <iam_token>" -
使用此示例来
terminate正在运行的作业。示例
curl -X DELETE https://schematics.cloud.ibm.com/v1/workspaces/<wks_id>/actions/{job_id}?signal=terminate -H "Authorization: <iam_token>"有关停止正在运行的作业的更多信息,请参阅 停止并删除正在运行的作业 API。
查看 Schematics 作业详细信息
使用控制台中的 Schematics 作业页面来查找所有 Schematics 活动的历史记录,例如下载 template,plan 和 apply 以及查看作业日志。 这些作业是在您运行模板时创建的。 您还可以查看处于 plan 中的资源计数,或者处于 已添加,已修改或 已销毁 状态的 apply 作业计数。 有关作业队列进程的更多信息,请参阅 Schematics 作业队列的执行进程。
在作业日志中,您可以看到如下消息:
-
**活动已触发。 等待日志 **。 这意味着作业处于暂挂状态,尚未处理。
-
您的作业已提交并处于队列中,位置 x 为 y。 此处
x是作业在暂挂队列中的位置,y是总计暂挂作业。 Schematics 后端中的可用资源同样分布到暂挂作业。 如果您正在运行大量作业,那么可以查看职位增加以及总数。