全部產品
Search
文件中心

DataWorks:Shell節點

更新時間:Jul 29, 2025

DataWorks內的Shell節點可支援對資源的使用、配置參數、運行指令碼以及訪問OSSUtils等功能,您可參考本文使用Shell節點。

前提條件

  • RAM帳號添加至對應空間(可選)。

    進行任務開發的RAM帳號已被添加至對應工作空間中,並具有開發空間管理員(許可權較大,謹慎添加)角色許可權。新增成員並授權,詳情請參見為工作空間增加空間成員

  • 對應空間已綁定Serverless資源群組。詳情請參見:使用Serverless資源群組

  • 進行Shell節點開發前,需建立對應的Shell節點,詳情請參見:建立周期任務

注意事項

  • Shell節點支援標準Shell文法,不支援互動性文法。

  • Serverless資源群組上運行Shell節點時,如果您需要訪問的目標端有白名單限制,請新增和使用Serverless資源群組至目標端應用。

    說明

    運行該任務時,若使用Serverless資源群組,單任務支援最大配置64CU,但建議不超過16CU,以避免CU過大導致資源不足,影響任務啟動。

  • 如果您在開發工作單位時,需要特定的開發環境支援,可使用DataWorks提供的自訂鏡像功能,定製化構建任務執行所需的組件鏡像。更多資訊,請參見自訂鏡像

  • 請勿在Shell裡啟動大量子進程,由於目前Shell節點沒有資源限制,該操作可能會影響運行在該調度資源群組上的其他任務。

  • 如果在Shell節點中引用了其他指令碼,例如在Shell中引用了Python,只有Python指令碼運行完成後,Shell指令碼才會結束。

開發Shell節點

  1. Shell節點開發。

    以下僅為簡單樣本,您可以查看更多Shell節點開發樣本

    echo "Hello DataWorks!"
  2. 完成代碼開發後,在右側單擊調試配置,選擇調試運行所需的資源群組、調度參數等配置後,即可單擊image運行按鈕,對代碼進行測試回合。

  3. 完成Shell節點指令碼開發與測試後,需對Shell節點進行調度配置,以實現Shell節點的周期運行。

  4. 完成任務調度配置後,需對節點進行儲存後,才可進行下一步操作。

節點發布與營運

  1. 完成調度配置後,即可對已完成的Shell節點提交發布至生產環境,詳情請參見:節點/工作流程發布

  2. 發布完成的任務,將按照您配置的調度進行周期運行,可在營運中心 > 任務營運 > 周期任務營運 > 周期任務中查看發行的周期任務,並對任務進行營運操作,詳情請參見:營運中心入門

附錄一:如何判斷Shell自訂指令碼任務是否執行成功

指令碼運行成功或者失敗是根據如下進程退出碼來進行判斷的:

  • 退出碼0:表示成功。

  • 退出碼-1:表示進程被終止。

  • 退出碼2:需要平台自動重跑一次任務。

  • 其它退出碼:表示失敗。

附錄二:Shell節點開發樣本

通過Shell節點使用資源

  1. DataWorks支援通過資源管理將需要在Shell節點中使用的資源上傳至DataWorks,詳情請參見資源管理

    說明

    資源需要提交後才可被節點引用。若生產任務需使用該資源,還需將該資源發布至生產環境。

  2. 開啟已建立的Shell節點進入指令碼編輯頁面。

  3. 單擊左側導覽列中的image,進入資源管理菜單,然後找到需要引用的資源。懸浮選中資源後,右鍵選擇引用資源,即可在Shell指令碼中引用該資源。image

    • 引用成功的資源將自動添加一條##@resource_reference{"資源名"}的注釋。

    • 引用成功的資源可通過資源名使用該資源。

通過Shell節點使用調度參數

通用Shell節點中的變數不允許自訂命名,只能以$1、$2、$3...命名(參數序號由小到大,依次遞增),在調度參數中配置參數值,多個參數取值使用空格分隔。

image

例如,本樣本中:

  • 參數$1賦值目前時間:$[yyyymmdd]

  • 參數$2 手動賦值為固定值:Hello DataWorks

說明

如需擷取上遊節點的輸出參數,您需要在調度配置 > 節點上下文參數 > 節點輸入參數中添加參數,設定參數值為上遊節點的輸出參數。

通過Shell節點訪問OSSUtils

OSSUtils使用路徑、全路徑,預設已安裝。

配置使用者名稱密碼config可自行配置,比如將config基於營運助手上傳的設定檔放到該目錄下:/home/admin/usertools/tools/myconfig

[Credentials]
        language = CH
        endpoint = oss.aliyuncs.com
        accessKeyID = your_accesskey_id
        accessKeySecret = your_accesskey_secret
        stsToken = your_sts_token
        outputDir = your_output_dir
        ramRoleArn = your_ram_role_arn

命令格式如下:

#!/bin/bash
/home/admin/usertools/tools/ossutil64 --config-file  /home/admin/usertools/tools/myconfig  cp oss://bucket/object object
if [[ $? == 0 ]];then
    echo "access oss success"
else
    echo "failed"
    exit 1
fi
echo "finished"

通過Shell節點訪問OSS或NAS上的資料

DataWorks支援建立OSS或NAS類型的資料集,然後在Shell節點開發中使用資料集,實現Shell節點運行過程中讀寫OSS或NAS儲存中的資料。

相關文檔

Shell類型節點運行Python指令碼

Shell類型節點使用ossutil工具