跳到主要内容

Shell 节点

概述

Shell 节点支持在工作流中运行多行 Shell 命令或脚本,适用于调用云厂商命令行工具、执行文件传输,以及迁移已有 Bash/Shell 脚本等场景。

使用前准备

使用 Shell 节点前,请确认:

  • 当前环境已配置可用的 Shell 镜像。
  • 脚本依赖的命令或工具已包含在所选镜像中。
  • 当前账号拥有工作流编辑权限。

添加 Shell 节点

  1. 进入工作流编辑页面。
  2. SHELL 节点拖至画布中的有效区域。
  3. 节点创建后会自动被选中,下方配置区域显示 节点配置 页签。

新建节点尚未填写必填配置时,画布中的节点会显示告警标识。完成配置并保存后,告警标识消失。

配置节点

节点配置 页签中完成以下设置:

基本信息

  • 节点名称:用于在画布、运行实例和任务管理中识别该节点。
  • 描述:选填。可填写脚本用途、数据处理逻辑或使用说明,便于协作和问题排查。

Shell 脚本

在脚本编辑器中输入需要执行的 Shell 命令或脚本。脚本内容为必填项,支持:

  • 输入和编辑多行命令。
  • 引用任务参数、全局参数、时间宏和动态参数。
  • 格式化脚本内容。
  • 放大编辑器,以便查看和编辑较长脚本。

如果脚本内容为空,节点无法保存,并提示“脚本内容不能为空”。

引用参数

  1. 将光标置于需要插入参数的位置,或选中需要替换的脚本文本。
  2. 单击脚本编辑器中的 插入参数
  3. 选择任务参数、全局参数、时间宏或动态参数分类。
  4. 单击目标参数,系统会将对应的引用表达式插入光标位置;如果已选中文本,则替换所选文本。

参数的实际取值在任务运行时解析。建议在发布前检查参数名称、作用域和运行时取值是否符合预期。

资源配置

运行 Shell 节点时,可配置以下资源:

  • CPU(核):默认为 1。
  • 内存(GB):默认为 2。

请根据脚本处理的数据量和工具资源需求合理设置。

Shell 镜像

从下拉列表中选择运行脚本使用的 Shell 镜像。新建节点默认使用管理员设置的默认 Shell 镜像,可根据脚本依赖切换为其他可用版本。

如果列表中没有所需镜像,请联系管理员前往「管理中心 > 系统集成 > 镜像配置」完成配置。

配置运行选项

切换至 运行选项 页签,可配置:

  • 运行标志:设置节点正常运行或禁止执行。
  • 失败重试:设置失败后的重试次数和重试间隔。
  • 超时限制:设置节点允许执行的最长时间。超过限制后,节点按超时处理。

完成节点配置后,保存并发布工作流。建议先运行一次任务,确认脚本、参数、镜像和资源配置均符合预期。

查看运行日志

任务运行后,可进入工作流实例查看 Shell 节点状态和日志。日志中会记录节点提交、脚本开始运行和运行完成等关键阶段,例如:

[INFO] 时间 节点名称【SHELL】提交运行
[INFO] 时间 节点名称【SHELL】运行 Shell 脚本
[INFO] 时间 节点名称【SHELL】运行完成

在任务管理中,Shell 节点的描述显示为 SHELL。单击操作对象中的节点名称,可跳转至对应实例节点。

停止运行中的节点

当任务运行到 Shell 节点时,可停止任务。系统会停止正在运行的 Shell 脚本,并清理运行过程中产生的临时文件。

管理 Shell 镜像

本节面向管理员。

系统的镜像配置同时管理 Python 镜像和 Shell 镜像。管理员可以新建 Shell 镜像、设置默认镜像,并按镜像类型筛选列表。

新建 Shell 镜像

  1. 进入管理中心的 镜像配置 页面。
  2. 单击 新建镜像
  3. 将镜像类型选择为 Shell 镜像
  4. 填写镜像名称、镜像地址、镜像仓库密钥和备注等信息。
  5. 如需将该镜像用于后续新建的 Shell 节点,勾选 设为默认镜像
  6. 单击 确认

镜像名称通过镜像名称在 Shell 节点中使用镜像
备注镜像相关描述
镜像地址Shell 镜像地址
镜像仓库密钥通过地址和密钥拉取 Shell 镜像
设为默认镜像开启后,后续 Shell 节点默认使用此镜像

将某个镜像设为默认 Shell 镜像后,后续新建的 Shell 节点会默认使用该镜像,不会自动修改已有节点的镜像选择。

常见问题

为什么无法添加 Shell 节点?

请确认当前版本包含离线开发高级版功能,并检查当前账号是否为工作流所有者或协作者、是否拥有节点添加权限。

为什么节点一直显示告警?

新建 Shell 节点需要填写脚本内容。请同时检查镜像和资源配置是否有效,然后重新保存。

为什么脚本中的命令运行失败?

请在实例日志中查看具体错误,并重点检查:所选镜像是否包含相关命令或工具、参数是否正确解析、外部地址是否可访问,以及账号或密钥是否具备所需权限。