

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# HealthOmics 运行中的任务生命周期
<a name="workflow-run-tasks"></a>

*任务*是运行中的单个进程。 HealthOmics 将工作流程中的每项任务映射到最适合任务所需资源的 omics 计算实例类型。您可以在工作流程定义中指定所需的资源。有关更多信息，请参阅[HealthOmics 任务的计算和内存要求](memory-and-compute-tasks.md)。

HealthOmics 提供临时运行存储空间供任务使用。 HealthOmics 将任务输入文件作为只读文件复制到临时运行存储中。 HealthOmics 提供了符号链接，以便任务可以访问工作目录中的输入文件。该任务只能访问您在工作流程定义文件中声明的文件。

## 任务状态值
<a name="task-status-values"></a>

您可以通过监控任务状态来跟踪任务的进度。开始运行时， HealthOmics 将运行中每项任务**Pending**的任务状态设置为。当任务开始并在其生命周期中进行时，会 HealthOmics 更新状态值以反映其当前进度。

您可以使用以下任一方法检索任务状态：
+  HealthOmics 控制台在**Run details**页面上显示运行中每项任务的状态。
+ **GetRunTask**API 操作返回任务状态。
+ 您可以使用 EventBridge 事件监控任务状态。有关更多信息，请参阅 [EventBridge 与一起使用 AWS HealthOmics](eventbridge.md)。

您可以使用 **GetRunTask** API 操作检索任务的当前状态。 HealthOmics 控制台会在**Run details**页面上显示运行中每项任务的状态。

HealthOmics 支持以下任务状态值：

**待处理**  
您的任务在队列中，正在等待启动。任务在开始之前会在短时间内处于待处理状态。  
+ 在您的账户达到最大并发任务数后，任务仍处于待处理状态。
+ 如果运行是已达到任何资源最大值的运行组的一部分，则任务仍处于待处理状态。
+ 您可以调整运行优先级，以便特定的排队运行及其任务在其他排队运行之前开始。有关运行优先级的更多信息，请参见 [运行优先级](creating-run-groups.md#run-priority)

**启动**  
HealthOmics 正在创建任务并配置任务所需的资源，例如工作流任务节点。

**Running**  
正在处理任务时，任务状态 HealthOmics 为 “正在运行”。

**停止**  
完成任务处理并导出输出数据后，任务将转换为 “停止”。  
+ HealthOmics 取消配置工作流任务节点。

**已完成**  
HealthOmics 已完成任务处理并将输出数据传输到运行的存储文件系统。

**失败**  
HealthOmics 在处理任务时遇到了错误，但没有完成。  
+ 任务将转换为 “停止” 状态（HealthOmics 取消配置资源），然后转换为 “失败” 状态。
+ 如果错误是服务错误（5XX HTTP 状态码），并且工作流支持重试此任务，则会 HealthOmics 尝试再次处理该任务。 HealthOmics 为重试分配一个新的任务 ID。

**已取消**  
HealthOmics 在用户发起取消运行的请求后停止任务。  
+ 任务将转换为 “停止” 状态（HealthOmics 取消配置资源），然后转换为 “已取消” 状态。

## 工作流任务疑难解答
<a name="debugging-tasks"></a>

以下是对任务进行故障排除的最佳做法和注意事项。
+ 任务日志依赖于任务`STDOUT`并`STDERR`由任务生成。如果任务中使用的应用程序没有生成其中任何一个，则不会有任务日志。要帮助调试，请在`verbose`模式下使用应用程序。
+ 要查看任务中正在运行的命令及其插值值，请使用 `set -x` Bash 命令。这可以帮助确定任务是否使用了正确的输入，并确定哪些错误可能使任务无法按预期运行。
+ 使用`echo`命令将变量的值输出到` STDOUT`或`STDERR`。这可以帮助您确认它们是否按预期进行设置。
+ 使用诸如`ls -l`` <name_of_input_file>`此类的命令来确认输入是否存在并且大小符合预期。如果不是，则可能会发现先前的任务由于错误而产生空输出时存在问题。
+ 使用任务脚本`df -Ph . | awk 'NR==2 {print $4}'`中的命令来确定任务当前可用的空间，并帮助确定在哪些情况下可能需要使用额外的存储分配来运行工作流程。

在任务脚本中包含上述任何命令都假设任务容器也包含这些命令，并且它们位于容器环境中。`path`