Skip to main content

创建定时任务

本指南介绍如何创建定时任务,让一个 Workflow 按 Cron 计划在指定设备上自动执行。比如每天早上 8 点自动签到、每小时巡检一次某个 App。

前提:先有一个 Workflow

定时任务执行的是 Workflow,而不是临时输入的指令。所以在创建定时任务之前,你必须先准备好要跑的 Workflow。如果还没有,请先去 Workflow 页面创建一个,参见使用 Workflow

如果没有任何可用 Workflow,新建定时任务的对话框里选择 Workflow 时会提示「没有可用的工作流,请先创建工作流」。

新建定时任务

打开左侧导航的「定时任务」页面。这里列出了已有的所有定时任务,每个任务是一张卡片,显示它绑定的 Workflow、设备、执行模式、Cron 表达式、上次执行结果和下次执行时间。

定时任务列表

点击右上角的「新建任务」,弹出创建对话框,依次填写下面几项。

新建定时任务

任务名称

给任务起一个一眼能认出来的名字,比如「每日签到」。这个名字只用于在列表里区分任务,不影响执行。

选择 Workflow

从下拉框里选一个已有的 Workflow,这是任务到点后实际要执行的内容。

执行模式

选择用哪种方式执行这个 Workflow:

  • 经典执行(classic):默认模式,逐步执行。
  • 分层代理(layered):由规划层拆解步骤后执行,适合更复杂的任务。

两种模式的区别详见模式说明。如果不确定,先用经典执行。

选择设备或分组

对话框里有「选择设备」和「选择分组」两个切换按钮,二选一:

  • 选择设备:勾选一台或多台具体设备,任务会在这些设备上分别执行。设备右侧的绿点表示当前在线。
  • 选择分组:选一个设备分组,任务会在该分组下的所有设备上执行。分组适合设备会增减的场景,新加入分组的设备会自动纳入这个定时任务,不用再回来改配置。设备分组的管理参见多设备管理

两种方式必须至少指定一项,否则无法保存。

Cron 表达式

填入一个 Cron 表达式来描述执行计划。格式见下一节。你也可以直接用快捷预设填充:

  • 每小时:0 * * * *
  • 每天 8:00:0 8 * * *
  • 每天 12:00:0 12 * * *
  • 每天 18:00:0 18 * * *
  • 每周一 9:00:0 9 * * 1

点击任一预设按钮会把对应表达式自动填进输入框,你也可以在此基础上手动改。

填完后点「保存」即可。新任务默认是启用状态,到点就会自动执行。

Cron 表达式格式

Cron 表达式由 5 个字段组成,用空格分隔,依次是:

分 时 日 月 周

各字段的取值范围:分(0-59)、时(0-23)、日(1-31)、月(1-12)、周(0-6,0 表示周日)。* 表示「每一个」。

几个例子:

  • 0 8 * * *:每天 8 点 0 分执行(分=0,时=8,日/月/周都不限)。
  • 30 9 * * 1:每周一 9 点 30 分执行。
  • 0 */2 * * *:每隔 2 小时执行一次。
  • 0 0 1 * *:每月 1 号 0 点执行。

注意必须是 5 个字段,多了或少了都会保存失败。

启用、查看与管理

回到定时任务列表,每张卡片上都能完成日常管理。

启用 / 禁用:卡片右上角的开关控制任务是否生效。关掉开关任务就暂停,不会再触发;重新打开即恢复,不用删了重建。

下次执行时间:卡片上的「下次执行」显示按当前 Cron 计算出的下一次触发时间,可以用它来核对自己的表达式写对了没有。「上次执行」则显示最近一次的执行时间和结果(成功 / 部分成功 / 失败),多设备任务还会显示成功数 / 总数。

编辑:点卡片上的「编辑」可以修改任务的任意字段,保存后下次执行按新配置生效。

删除:点「删除」并确认后任务会被移除,此操作不可恢复。

配合 Docker 服务器 7x24 运行

定时任务只有在 AutoGLM-GUI 服务进程运行时才会触发。如果你用桌面版或本地命令行启动,关掉程序后定时任务就不再执行了。

要让定时任务真正做到无人值守、长期稳定地按计划跑,建议把后端部署在一台常开的服务器上,用 Docker 以守护方式运行,并把目标设备通过无线方式连上去。部署方式参见用 Docker 部署。这样即使你关掉自己的电脑,服务器上的定时任务也会照常执行。