全部產品
Search
文件中心

SchedulerX:指令碼任務

更新時間:Apr 25, 2025

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

簡介

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

yuque_diagram (1)

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

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

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

前提條件

建立指令碼任務

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

image

步驟一:選擇指令碼語言

選擇指令碼語言。當前支援的指令碼語言類型: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分區任務

編寫指令碼

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

image

指令碼歷史版本

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

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

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

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

image

Demo

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

  1. 接入兩個schedulerx-agent

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

    image

  3. 單擊目標任務操作列下的執行一次

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

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

      image

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

      image

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

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

    image

  2. 完成任務建立後,單擊目標任務的編輯指令碼,指令碼內容如下:

    image

  3. 單擊目標任務操作列下的執行一次

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

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

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

    image

相關文檔

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