本文介紹如何在建立任務時通過編寫Shell、Python或Php指令碼建立指令碼任務。
簡介
使用指令碼任務的原理如下圖所示:

使用指令碼任務功能,需要提前在目標裝置上部署
schedulerx-agent,用來和服務端通訊,接收指令碼執行命令,返回執行結果。需要在執行指令碼的裝置上,提前部署好指令碼運行需要的依賴,例如python依賴庫、依賴的檔案等。
每次執行一個指令碼,
schedulerx-agent會fork一個子進程來運行指令碼,該子進程不會佔用schedulerx-agent的記憶體,但是會佔用部署機器的記憶體(具體記憶體消耗量取決於指令碼運行內容)。如果同時運行大量指令碼任務,則可能導致裝置記憶體不足。如果有運行超大資源指令碼的情境,推薦使用K8s任務,通過Pod運行指令碼。
前提條件
需要提前部署schedulerxAgent,用於運行指令碼。
建立指令碼任務
登入分布式任務調度平台,在左側導覽列的任務管理頁面建立任務。配置項中任務類型選擇指令碼任務。

步驟一:選擇指令碼語言
選擇指令碼語言。當前支援的指令碼語言類型: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
通過廣播任務做分散式處理
接入兩個
schedulerx-agent。建立指令碼語言為Shell的指令碼任務,執行模式選擇廣播運行,指令碼內容如下:

單擊目標任務操作列下的執行一次。
在左側導覽列的執行列表中,單擊目標任務執行個體操作列下的日誌,查看每個機器執行的內容。
172.16.13.125作業記錄如下,可以看到取到的分區序號是1,分區總數是2。
172.16.13.120作業記錄如下,可以看到取到的分區序號是0,分區總數是2。
通過分區任務做分散式處理
建立指令碼語言為Shell的指令碼任務,執行模式選擇分區運行,其他任務配置如下:

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

單擊目標任務操作列下的執行一次。
在左側導覽列的執行列表中,單擊目標任務執行個體操作列下的日誌,查看每個機器的分區參數。
可以看到
172.16.13.120運行了2次,分區參數分別是hangzhou和beijing。172.16.13.125運行了2次,分區參數分別是shenzhen和shanghai。

相關文檔
系統內建參數,請參見指令碼任務系統變數的參數及說明。