命令定时执行方式
定时执行指按照设置的时间间隔或者时间点执行命令。云助手目前支持以下三种定时执行方式:固定时间间隔执行、仅在指定时间执行一次、基于时钟定时执行。
固定时间间隔执行
基于Rate表达式,按照设置的时间间隔执行命令。时间间隔支持按秒(s)、分钟(m)、小时(h)和天(d)来选择,适用于在固定时间间隔执行任务的场景。
使用固定时间间隔执行有以下限制:
设置的时间间隔不大于7天、不小于60秒,且需大于定时任务的超时时间。
执行间隔只基于固定频率,与任务实际执行需要的时间无关。例如设置每5分钟执行一次命令,任务需要2分钟执行完成,则在任务完成3分钟后继续执行下一轮。
创建任务时不会立即执行。例如设置每5分钟执行一次命令,创建任务时不会立即执行一次命令,而是在任务创建完成后的5分钟后开始执行。
仅在指定时间执行一次
按照设置的时区和执行时间点执行一次命令,适用于在指定时间执行一次任务的场景。如果不指定时区,默认为UTC时区。
例如设置执行时间为2022-05-17 17:30:50,时区为(GMT+8:00) Asia/Shanghai,即表示系统会在中国/上海时间,2022年05月17日17点30分50秒执行一次命令。
基于时钟定时执行
基于Cron表达式,按照设置的执行频率执行命令。执行频率可精确到秒、分钟、小时、日期、月份、星期、年份,在指定的时区下,根据Cron表达式推算定时任务执行时间并执行。配置灵活,适用于较复杂的定时任务执行场景。
Cron表达式简介
Cron表达式是一个具有时间含义的字符串,字符串以5~6个空格隔开,分为6~7个域,格式为X X X X X X X
。其中X
是一个域的占位符。最后一个代表年份的域非必须,可省略。单个域有多个取值时,使用半角逗号,
隔开取值。每个域可以是确定的取值,也可以是具有逻辑意义的特殊字符。每个域最多支持一个前导零。
设置的最小时间间隔需大于或等于定时任务的超时时间,且不小于10秒。如果不指定时区,默认为执行定时任务实例的系统内部时区。
域取值
下表为Cron表达式中七个域能够取得值以及支持的特殊字符。
域 | 是否必需 | 取值范围 | 特殊字符 |
秒 | 是 | [0, 59] | * , - / |
分钟 | 是 | [0, 59] | * , - / |
小时 | 是 | [0, 23] | * , - / |
日期 | 是 | [1, 31] | * , - / ? L W |
月份 | 是 | [1, 12]或[JAN, DEC] | * , - / |
星期 | 是 | [1, 7]或[MON, SUN]。若您使用[1, 7]表达方式, | * , - / ? L # |
年 | 否 | [当前年份,2099] | * , - / |
特殊字符
Cron表达式中的每个域都支持一定数量的特殊字符,每个特殊字符有其特殊含义。
特殊字符 | 含义 | 示例 |
| 所有可能的值。 | 在月域中, |
| 列出枚举值。 | 在分钟域中, |
| 范围。 | 在分钟域中, |
| 指定数值的增量。 | 在分钟域中, |
| 不指定值,仅日期和星期域支持该字符。 | 当日期或星期域其中之一被指定了值以后,为了避免冲突,需要将另一个域的值设为 |
| 单词Last的首字母,表示最后一天,仅日期和星期域支持该字符。 重要 指定 |
|
| 除周末以外的有效工作日,在离指定日期的最近的有效工作日触发事件。 | 在日期域中 |
| 确定每个月第几个星期几,仅星期域支持该字符。 | 在星期域中, |
取值示例
以下为Cron表达式的取值示例。
示例 | 说明 |
| 每天上午10:15执行任务 |
| 每天上午10:15执行任务 |
| 每天中午12:00执行任务 |
| 每天上午10:00点、下午14:00以及下午16:00执行任务 |
| 每天上午09:00到下午17:00时间段内每隔半小时执行任务 |
| 每天下午14:00到下午14:59时间段内每隔1分钟执行任务 |
| 每天下午14:00到下午14:05时间段内每隔1分钟执行任务 |
| 每天下午14:00到下午14:55时间段内每隔5分钟执行任务 |
| 每天下午14:00到下午14:55、下午18:00到下午18:55时间段内每隔5分钟执行任务 |
| 每个星期三中午12:00执行任务 |
| 每月15日上午10:15执行任务 |
| 每月最后一日上午10:15执行任务 |
| 每月最后一个星期六上午10:15执行任务 |
| 每月第三个星期六上午10:15执行任务 |
| 每年3月的每个星期三下午14:10和14:44执行任务 |
| 2022年每天上午10:15执行任务 |
| 每年每天上午10:15执行任务 |
| 2022年每天下午14:00到下午14:55、下午18:00到下午18:55时间段内每隔5分钟执行任务 |
| 2022年至2023年每月第三个星期六上午10:15执行任务 |
| 2022年至2025年每天上午09:00到下午17:30时间段内每隔半小时执行任务 |
| 从2022年开始,每隔两年3月的每个星期三下午14:10和14:44执行任务 |