0 任务配置
Doflatango edited this page 2018-03-12 14:43:10 +08:00
This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

任务类型

  • 普通任务:任务会在每一台指定的节点上面执行。
  • 单机单进程:任务会在所有指定的节点中选择其中一个节点来执行,并且同时有且只有一个任务进程在跑,直到本次任务执行结束。
  • 组级别普通任务:与单机单进程类型不一样的地方是,去除了同时有且只有一个任务进程在跑的限制,只要任务调度时间到,就会在某个节点上面开始另一个任务进程。

任务分组

任务分组只是出于方便管理的原因而添加的功能,在添加/修改任务时,可以选择已有的分组,或者直接在输入框填写新的分组名称来创建新分组,同时把任务分配给新分组。

任务脚本

  • 脚本:相当于 crontab 中的执行命令,复杂的或者需要管道支持的任务需要写成 shell 脚本。
  • 参数:脚本参数以空格作为分割符,其规则类似在终端中的使用,如果参数本身有空格,可以用 \ 对空格进行转义,或者使用'或"把单个参数包含起来,例如:
a.sh a\ a 'b\'b' "c c"
# 将会得到 a a、b'b、c c

如果参数比较复杂并且不确定规则,建议先建一个测试任务看看预期会得到的参数是怎么样的。

  • 后缀名与执行用户限制:打开配置文件 security.json,修改 opentrue 开启此限制,那么 usersext 将会作为执行脚本的用户和后缀名限制白名单,只有脚本后缀和用户都在白名单中,任务才会被执行。

执行结果

  • 每个任务最终都会有一个结果cronsun 通过任务的 exit code 来判断任务执行是否成功,只有 exit code 为 0 时被认为任务是执行成功的。任务的结果会影响到一些配置,以及是否需要告警等,因此你需要正确的处理 exit code。

超时设置

  • 任务执行超过指定时间时将被强行结束,并且视为任务执行失败。

一个节点上面该任务并行数

  • 在同一时间内,同个节点上面最多可以有多少个相同任务进程一起执行。比如当你的任务执行一次需要 5 个小时,但是你设置了间隔 1 小时执行一次,那么大部分时间内都会有 4 个相同任务进程在执行,如果把此参数设置为 2那么同一时间内只能有最多 2 个相同任务进程。

重试 & 重试间隔

  • 只在任务失败时用到,设置一个大于 0 的次数在任务执行失败时cronsun 会一直尝试再次执行,直到重试次数达到上限,或者任务执行成功了。
  • 重试间隔表示任务失败后,等待多久才开始重新下一次尝试。

日志存储 & 清除

  • 存储:目前 cronsun 会直接捕获并合并任务的 stdout 和 stderr 存储到 MongoDB这个方式只适用于小量的日志对于有大量日志输出的任务你需要另外保存这个日志。
  • 清除:打开配置文件 web.json,修改 LogCleaner.EveryMinute 为一个大于 0 的数,比如 60表示每隔 60 分钟定时清除一次过期日志,过期时间是通过 LogCleaner.ExpirationDays 来定义,设置 3表示 3 天前的日志都是过期的,将会被清除。
  • 为任务单独设置过期时间:可能有些任务的日志比较重要,你想保存久一点,此时你可以在界面上面为任务单独设置过期时间。

定时器

  • 一个任务至少有一个定时器,定时器包含了任务执行的时间和节点;
  • 多个定时器之间共享上面的规则和限制;
  • 任务节点规则优先级:排除的节点 > 指定的节点 > 节点分组;
  • 调度规则:规则与 cron 一样,但是这里的设置有 6 段,支持秒级调用,请注意这一点;
0    1    2    3    4    5
|    |    |    |    |    |
|    |    |    |    |    +------ 星期 (0 - 6星期天 = 0)
|    |    |    |    +------ 月 (1 - 12)
|    |    |    +-------- 日 (1 - 31)
|    |    +---------- 时 (0 - 23)
|    +------------ 分 (0 - 59)
+-------------- 秒 (0 - 59)
字段名 允许的值 允许的特殊字符
0 - 59 * / , -
0 - 59 * / , -
0 - 23 * / , -
1 - 31 * / , - ?
1 - 12 或 JAN-DEC * / , -
星期 0 - 6 或 SUN-SAT * / , - ?

特殊符号说明:

  • *:星号会匹配字段中的所有值,如在小时字段用了星号,表示每个小时都会匹配;
  • / 匹配指定的数字,如 */3 在小时字段中等于 0,3,6,9,12,15,18,21 等被 3 整除的数;
  • , 匹配分开的值,如 1,3,4,7,8 在小时字段中表示这里面的小时会匹配;
  • - 匹配范围,例如:1-6,意思等同于 1,2,3,4,5,6
  • ? 或者 星期 字段可代替 *

预定格式:

预定项 描述 等价规则
@yearly (或 @annually) 每年执行一次, 每年 1 月 1 日 0 点开头执行 0 0 0 1 1 *
@monthly 每月执行一次, 每月 1 日 0 点开头执行 0 0 0 1 * *
@weekly 每周执行一次, 星期天 0 点开头执行 0 0 0 * * 0
@daily (或 @midnight) 每天执行一次, 每天 0 点开头执行 0 0 0 * * *
@hourly 每小时执行一次, 每小时 0 分开头执行 0 0 * * * *