本文介绍如何在创建任务时通过编写Shell、Python或Php脚本创建脚本任务。
简介
使用脚本任务的原理如下图所示:

-
使用脚本任务功能,需要提前在目标设备上部署
schedulerx-agent,用来和服务端通信,接收脚本执行命令,返回执行结果。 -
需要在执行脚本的设备上,提前部署好脚本运行需要的依赖,例如python依赖库、依赖的文件等。
-
每次执行一个脚本,
schedulerx-agent会fork一个子进程来运行脚本,该子进程不会占用schedulerx-agent的内存,但是会占用部署机器的内存(具体内存消耗量取决于脚本运行内容)。如果同时运行大量脚本任务,则可能导致设备内存不足。如果有运行超大资源脚本的场景,推荐使用K8s任务,通过Pod运行脚本。
前提条件
-
需要提前部署schedulerxAgent,用于运行脚本。
创建脚本任务
登录分布式任务调度平台,在左侧导航栏的任务管理页面创建任务。配置项中任务类型选择脚本任务。
填写任务名和描述,选择应用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
通过广播任务做分布式处理
-
接入两个
schedulerx-agent。在连接实例面板中,可看到两个实例(172.16.13.125、172.16.13.120)均已成功接入,状态为健康,版本号为1.12.5,接入方式为pod。
-
新建脚本语言为Shell的脚本任务,执行模式选择广播运行,脚本内容如下:
#!/bin/bash echo "分片序号: #{schedulerx.shardingId}" echo "分片总数: #{schedulerx.shardingNum}" echo "hello world" exit 0 -
单击目标任务操作列下的执行一次。
-
在左侧导航栏的执行列表中,单击目标任务实例操作列下的日志,查看每个机器执行的内容。
-
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。
-
通过分片任务做分布式处理
-
新建脚本语言为Shell的脚本任务,执行模式选择分片运行,其他任务配置如下:
执行命令设置为
/bin/sh,文件格式选择 unix,执行器选择 Agent,优先级选择中,分片参数设置为0=hangzhou,1=shanghai,2=beijing,3=shenzhen。 -
完成任务创建后,单击目标任务的编辑脚本,脚本内容如下:
#!/bin/bash echo "分片序号: #{schedulerx.shardingId}" echo "分片参数: #{schedulerx.shardingParameters}" echo "hello world" exit 0 -
单击目标任务操作列下的执行一次。
-
在左侧导航栏的执行列表中,单击目标任务实例操作列下的日志,查看每个机器的分片参数。
-
可以看到
172.16.13.120运行了2次,分片参数分别是hangzhou和beijing。 -
172.16.13.125运行了2次,分片参数分别是shenzhen和shanghai。
-
相关文档
系统内置参数,请参见脚本任务系统变量的参数及说明。