通过云助手,您可以设置具有Cron表达式的参数完成周期性任务、固定的日常任务、在某个准确的时间完成单次任务等基于时间的日程安排程序。

操作步骤

在ECS管理控制台上执行命令的步骤如下所示:

  1. 登录ECS管理控制台
  2. 在左侧导航栏,单击运维与监控 > 云助手
  3. 在顶部状态栏左上角处,选择地域。
  4. 运行一份云助手命令。详情请参见执行命令
    执行计划处选择定时执行,填写执行时间,命名格式为一个Cron表达式。
  5. 单击执行

您也可以使用ECS API InvokeCommand设置执行云助手命令,将Timed设置为true,并在Frequency参数中填入一个Cron表达式。

什么是Cron表达式

Cron表达式是一个具有时间含义的字符串,字符串以5或6个空格隔开,分为6或7个域,格式为X X X X X X或者X X X X X X X。其中X是一个域的占位符。单个域有多个取值时,使用半角逗号,隔开取值。每个域可以是确定的取值,也可以是具有逻辑意义的特殊字符。

Cron表达式取值示例

以下为Cron表达式的取值示例。

示例 说明
0 15 10 ? * * 每天上午10:15执行任务
0 15 10 * * ? 每天上午10:15执行任务
0 15 10 * * ? * 每天上午10:15执行任务
0 0 12 * * ? 每天中午12:00执行任务
0 0 10,14,16 * * ? 每天上午10:00点、下午14:00以及下午16:00执行任务
0 0/30 9-17 * * ? 每天上午09:00到下午17:00时间段内每隔半小时执行任务
0 * 14 * * ? 每天下午14:00到下午14:59时间段内每隔1分钟执行任务
0 0-5 14 * * ? 每天下午14:00到下午14:05时间段内每隔1分钟执行任务
0 0/5 14 * * ? 每天下午14:00到下午14:55时间段内每隔5分钟执行任务
0 0/5 14,18 * * ? 每天下午14:00到下午14:55、下午18:00到下午18:55时间段内每隔5分钟执行任务
0 0 12 ? * WED 每个星期三中午12:00执行任务
0 15 10 ? * MON-FRI 周一到周五每天上午10:15执行任务
0 0 2 1 * ? * 每月1日凌晨02:00执行任务
0 15 10 15 * ? 每月15日上午10:15执行任务
0 15 10 L * ? 每月最后一日上午10:15执行任务
0 15 10 ? * 6L 每月最后一个星期五上午10:15执行任务
0 15 10 ? * 6#3 每月第三个星期五上午10:15执行任务
0 10,44 14 ? 3 WED 每年3月的每个星期三下午14:10到14:44时间段内执行任务
0 15 10 ? * 6L 2002-2005 2002年至2005年每月最后一个星期五上午10:15执行任务
0 15 10 * * ? 2005 2005年每天上午10:15执行任务
0 15 10 ? * 6L 2002-2006 2002年至2006年每个月最后一个星期五上午10:15执行任务

Cron表达式域取值

下表为Cron表达式中七个域能够取的值以及支持的特殊字符。

是否必需 取值范围 特殊字符
[0, 59] * , - /
[0, 59] * , - /
小时 [0, 23] * , - /
日期 [1, 31] * , - / ? L W
月份 [1, 12]或[JAN, DEC] * , - /
星期 [1, 7]或[SUN, SAT]若您使用[1, 7]表达方式,1代表星期天,2代表星期一。 * , - / ? L #
[1970, 2099] * , - /

Cron表达式特殊字符

Cron表达式中的每个域都支持一定数量的特殊字符,每个特殊字符有其特殊含义。

  • *:表示所有可能的值。

    示例:在域月中*表示每个月,在域星期中*表示星期的每一天。

  • ,:表示列出枚举值。

    示例:在域分中5,20表示在分别在5分钟和20分钟触发一次。

  • -:表示范围。

    示例:在域分中5-20表示从5分钟到20分钟之间每隔一分钟触发一次。

  • /:表示指定数值的增量。

    示例:在域分钟中0/15表示从第0分钟开始,每15分钟。在域分钟中3/20表示从第3分钟开始,每20分钟。

  • ?:表示不指定值,仅域日期和星期支持该字符。当域日期或者星期其中之一被指定了值以后,为了避免冲突,需要将另一个域的值设为?
  • L:表示最后,是单词Last的首字母,仅域日期和星期支持该字符。L在域日期和星期两个域中的含义是不同的。
    • 示例:在域日期中,L表示某个月的最后一天。在域星期中,L表示一个星期的最后一天,也就是星期六(SAT)。
    • 如果在L前有具体的内容,例如,在域星期中的6L表示这个月的最后一个星期五。
      说明 指定L字符时,避免指定列表或者范围,否则,会导致逻辑问题。
  • W:表示除周末以外的有效工作日,系统将在离指定日期的最近的有效工作日触发事件。W字符寻找最近有效工作日时不会跨过当前月份,连用字符LW时表示为指定月份的最后一个工作日。

    在域日期中5W,如果5日是星期六,则将在最近的工作日星期五,即4日触发。如果5日是星期天,则将在最近的工作日星期一,即6日触发;如果5日在星期一到星期五中的一天,则就在5日触发。

  • #:表示确定每个月第几个星期几,仅域星期支持该字符。

    示例:在域星期中4#2表示某月的第二个星期三。