全部產品
Search
文件中心

SchedulerX:指令碼任務

更新時間:Jun 12, 2026

本文介紹如何在建立任務時通過編寫Shell、Python或Php指令碼建立指令碼任務。

簡介

使用指令碼任務的原理如下圖所示:

yuque_diagram (1)

  1. 使用指令碼任務功能,需要提前在目標裝置上部署schedulerx-agent,用來和服務端通訊,接收指令碼執行命令,返回執行結果。

  2. 需要在執行指令碼的裝置上,提前部署好指令碼運行需要的依賴,例如python依賴庫、依賴的檔案等。

  3. 每次執行一個指令碼,schedulerx-agentfork一個子進程來運行指令碼,該子進程不會佔用schedulerx-agent的記憶體,但是會佔用部署機器的記憶體(具體記憶體消耗量取決於指令碼運行內容)。如果同時運行大量指令碼任務,則可能導致裝置記憶體不足。如果有運行超大資源指令碼的情境,推薦使用K8s任務,通過Pod運行指令碼。

前提條件

建立指令碼任務

登入分布式任務調度平台,在左側導覽列的任務管理頁面建立任務。配置項中任务类型選擇指令碼任務

填寫任務名描述,選擇應用ID,設定優先順序(預設為),並在任務參數中輸入需要傳遞的參數。

步驟一:選擇指令碼語言

選擇指令碼語言。當前支援的指令碼語言類型:Shell、Python和Php。

步驟二:執行命令

執行不同指令碼語言的命令:

  • Shell指令碼:預設為/bin/sh

  • Python指令碼:預設為python,可以自行修改為python2或者python3

  • Php指令碼:預設為php

步驟三:檔案格式

unix系統和windows系統,分行符號不同。

  • 如果需要在Windows系統上執行指令碼,選擇windows

  • 如果需要在Linux/Unix/Mac上執行指令碼,選擇unix

重要

當指令碼源在Windows系統,但需在Linux系統上運行時,檔案格式選擇unix

步驟四:執行模式

接入前提:需提前部署schedulerxAgent,用於運行指令碼。具體操作,請參見Agent接入(指令碼或HTTP任務)

执行模式

  • 單機運行:如果部署了多個Agent,每次隨機播放一個Agent運行指令碼。

  • 廣播運行:如果部署了多個Agent,每次廣播所有Agent同時運行指令碼,一般用於批量營運。

  • 分區運行:請參見Python分區任務

編寫指令碼

指令碼任務建立完成後,會根據指令碼語言預設產生指令碼模板。可以在任務管理頁面,通過编辑脚本修改指令碼內容。

工作清單的執行方式列顯示當前任務的執行模式(如單機運行),並提供編輯指令碼入口。

指令碼歷史版本

專業版應用,可以使用指令碼歷史版本功能。在编辑脚本頁面,開啟歷史版本開關,進入歷史版本對比頁面。

  • 左邊為目前的版本,右邊為歷史版本。

  • 單擊下拉框可以看到歷史版本資訊,包含版本說明和建立時間。

  • 修改指令碼內容後,單擊確定,會提示輸入新的版本名稱

Demo

通過廣播任務做分散式處理

  1. 接入兩個schedulerx-agent

    串連執行個體面板中,可看到兩個執行個體(172.16.13.125、172.16.13.120)均已成功接入,狀態為健康,版本號碼為1.12.5,接入方式為pod。

  2. 建立指令碼語言Shell的指令碼任務,执行模式選擇廣播運行,指令碼內容如下:

    #!/bin/bash
    echo "分區序號: #{schedulerx.shardingId}"
    echo "分區總數: #{schedulerx.shardingNum}"
    echo "hello world"
    exit 0
  3. 單擊目標任務操作列下的執行一次

  4. 在左側導覽列的执行列表中,單擊目標任務執行個體操作列下的日誌,查看每個機器執行的內容。

    • 172.16.13.125作業記錄如下,可以看到取到的分區序號是1,分區總數是2。

      time : 2025-04-22 17:05:26
      ---
      ip : 172.16.13.125:34487
      executionId : 10496431_74039165530_1
      level : INFO
      log : 分區總數: 2
      time : 2025-04-22 17:05:26
      ---
      ip : 172.16.13.125:34487
      executionId : 10496431_74039165530_1
      level : INFO
      log : hello world
      time : 2025-04-22 17:05:26
      ---
      ip : 172.16.13.125:34487
      executionId : 10496431_74039165530_1
      level : INFO
      log : 分區序號: 1
      time : 2025-04-22 17:05:26
    • 172.16.13.120作業記錄中可以看到取到的分區序號是0,分區總數是2。

通過分區任務做分散式處理

  1. 建立指令碼語言Shell的指令碼任務,执行模式選擇分區運行,其他任務配置如下:

    執行命令設定為 /bin/sh檔案格式選擇 unix執行器選擇 Agent優先順序選擇分區參數設定為 0=hangzhou,1=shanghai,2=beijing,3=shenzhen

  2. 完成任務建立後,單擊目標任務的编辑脚本,指令碼內容如下:

    #!/bin/bash
    echo "分區序號: #{schedulerx.shardingId}"
    echo "分區參數: #{schedulerx.shardingParameters}"
    echo "hello world"
    exit 0
  3. 單擊目標任務操作列下的執行一次

  4. 在左側導覽列的执行列表中,單擊目標任務執行個體操作列下的日誌,查看每個機器的分區參數。

    • 可以看到172.16.13.120運行了2次,分區參數分別是hangzhoubeijing

    • 172.16.13.125運行了2次,分區參數分別是shenzhenshanghai

相關文檔

系統內建參數,請參見指令碼任務系統變數的參數及說明