全部产品
Search
文档中心

大数据开发治理平台 DataWorks:Shell节点

更新时间:Jan 28, 2026

DataWorks Shell节点面向数据开发工程师,支持标准Shell脚本运行,适用于文件操作、OSS/NAS数据交互等场景。用户可配置调度参数、引用资源、通过预装ossutil工具安全访问OSS,以及通过关联RAM角色运行节点。

权限说明

进行节点开发的RAM账号已被添加至对应工作空间中,并具有开发或空间管理员角色权限。详情请参见:为工作空间添加空间成员

使用说明

  1. 语法限制

    • 支持标准Shell语法,不支持交互性语法。

  2. 运行环境与网络访问

    • Serverless资源组上运行Shell节点时,如果您需要访问的目标端有白名单限制,请添加Serverless资源组对应IP至目标端应用。

    • 使用Serverless资源组,单任务支持最大配置64CU,建议不超过16CU,以避免CU过大导致资源不足,影响任务启动。

  3. 扩展开发环境

    • 如任务需要特定的开发环境支持,可使用DataWorks提供的自定义镜像功能,定制化构建任务执行所需的镜像。更多信息,请参见自定义镜像

  4. 资源与多脚本调用

    • 避免在Shell节点中启动大量子进程,由于目前Shell节点没有资源限制,大量子进程可能会影响运行在该调度资源组上的其他任务。

    • 若Shell节点调用了其他脚本(例如Python),Shell节点会等待被调用脚本执行完成后才结束。

快速入门

下面将以一个输出"Hello DataWorks!"示例,带您完成Shell节点的创建、调试、配置与发布全流程。

节点开发

  1. 登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的数据开发与运维 > 数据开发,在下拉框中选择对应工作空间后单击进入数据开发

  2. 在数据开发(Data Studio)页面,新建Shell节点。

  3. 在脚本编辑区内输入标准shell代码(不支持交互式语法):

    echo "Hello DataWorks!"
  4. 完成代码开发后,在右侧单击运行配置,选择目标调试资源组及其他必要执行参数,随后单击image运行按钮,触发本地化调试执行。

  5. 脚本通过调试验证后,需在右侧单击调度配置,完成调度周期、依赖关系、参数设置等生产级调度策略配置,以支撑节点按计划周期性自动执行。

  6. 完成任务调度配置后,需对节点进行保存后,才可进行下一步操作。

节点发布与运维

  1. 完成调度配置后,可将Shell节点提交发布至生产环境,实现从开发态到生产态的正式部署。具体操作及发布流程,请参见:节点/工作流发布

  2. 发布成功后,任务将按照您配置的调度进行周期运行。您可通过单击左上角image图标,在弹出导航页中依次选择全部产品 > 数据开发与运维 > 运维中心,进入运维中心,随后在左侧菜单栏定位至任务运维 > 周期任务运维 > 周期任务,即可查看已发布的周期任务。详细功能说明请参见:运维中心入门

高级用法

引用资源

  1. DataWorks支持通过资源管理将需要在Shell节点中使用的资源上传至DataWorks,详情请参见资源管理

    说明

    资源需要发布后才可被节点引用。若生产任务需使用该资源,还需将该资源发布至生产环境。

  2. 打开已创建的Shell节点进入脚本编辑页面。

  3. 单击左侧导航栏中的image,进入资源管理菜单,然后找到需要引用的资源。选中资源后,右键选择引用资源,即可在Shell脚本中引用该资源。

    image

    说明
    • 引用成功后,系统将自动在脚本顶部插入形如##@resource_reference{resource_name} 的声明注释。

    • 该注释是 DataWorks 识别资源依赖、在任务运行时自动挂载对应资源至执行环境的必要标识,请勿手动修改或删除。

使用调度参数

调度参数以位置参数形式注入 Shell 节点,不支持自定义变量名:DataWorks 将您在节点调度配置 > 调度参数中设置的参数值,按顺序作为 $1$2$3 … 等位置参数传递给 Shell 脚本。当参数数量超过9时,需使用 ${10}${11} 等大括号语法以确保正确解析。多个参数值需用空格分隔,且顺序必须与脚本中引用的位置严格一致。

image

例如,本示例中:

  • 参数$1赋值为当前时间:$[yyyymmdd]

  • 参数$2赋值为固定值:Hello DataWorks

说明
  • 若某个参数值包含空格,可用引号包裹,此时引号内的整个内容被视为一个独立参数。

  • 如需获取上游节点的输出参数,您需要在调度配置 > 节点上下文参数 > 节点输入参数中添加参数,设置参数值为上游节点的输出参数。

使用ossutil访问OSS

DataWorks Shell节点原生支持阿里云OSS命令行工具 ossutil,支持Bucket 管理、文件上传/下载、批量操作等任务。您可通过配置文件方式或命令行参数方式配置访问凭证使用ossutil访问OSS。

特别地,在新版数据开发中,针对Shell节点,除了上述两种方式,其支持通过绑定RAM角色,利用阿里云 STS(Security Token Service)动态获取该角色的临时安全凭证,并使用ossutil访问OSS。此方式无需在代码中明文配置长期有效的 AccessKey,即可安全地获得访问目标云资源的权限。详情请参见相关文档:配置节点关联角色

说明

ossutil 已预装在DataWorks环境中,无需手动安装。默认路径为 /home/admin/usertools/tools/ossutil64

使用数据集访问OSS/NAS

DataWorks支持创建OSS或NAS类型的数据集,然后在Shell节点开发中使用数据集,实现Shell节点运行过程中读写OSS或NAS存储中的数据。

通过关联角色运行节点

支持配置节点关联角色,使用特定RAM角色运行节点任务,实现权限的细粒度控制和安全管控。

附录:脚本退出码说明

根据脚本退出码可进一步判断脚本是否运行成功。

  • 退出码0:表示成功。

  • 退出码-1:表示进程被终止。

  • 退出码2:需要平台自动重跑一次任务。

  • 其它退出码:表示失败。

下图为Shell节点执行成功(退出码为 0)时的标准运行日志示例。

image

说明

基于Shell底层机制,Shell节点中整个脚本的退出码 = 最后一条被执行命令的退出码。