crontab 表达式解析

本贴最后更新于 2101 天前,其中的信息可能已经天翻地覆

1 Linux crontab 表达式

1.1 基本格式

crontab 表达式的"*"表示的是在对应的时间粒度下可取集合中的任意值,这样五个粒度的值确定后,就给出了命令执行的时间点

*   *   *   *   * cmd
分  时  日  月   星期

分: 0 - 59
时: 0 - 23
日: 1 - 31
月: 1 - 12
周: 1 - 7
1.1.1 示例 1 每分钟执行一次
* * * * * * date >>~/hello.log

因为每个时间粒度都指定为"*",那么以下集合的笛卡尔积即表示 date 命令所有执行时间点,也就是每分钟执行一次

分钟取值集合{0,1,2,3,...} 60个值可取
小时取值集合{0,1,2,3,..,} 24个值可取
日期取值集合{1,2,3,...} 最多31个值可取
月份取值集合{1,2,3,4,6,7,8,9,10,11,12}
星期取值集合{1,2,3,4,5,6,7}
1.1.2 示例 2 每 10 分钟执行一次
*/10 * * * * date >>~/hello.log
分钟取值集合{0,10,20,30,40,50} 6个值可取
小时取值集合{0,1,2,3,..,} 24个值可取
日期取值集合{1,2,3,...} 最多31个值可取
月份取值集合{1,2,3,4,6,7,8,9,10,11,12}
星期取值集合{1,2,3,4,5,6,7}

执行的时间点:

2月19号星期二23点0分
2月19号星期二23点10分
2月19号星期二23点20分
2月19号星期二23点30分
...
// 类推
1.1.3 示例 3 23 分、37 分钟时执行
23,37 * * * * date >>~/hello.log
分钟取值集合{23,37} 2个值可取
小时取值集合{0,1,2,3,..,} 24个值可取
日期取值集合{1,2,3,...} 最多31个值可取
月份取值集合{1,2,3,4,6,7,8,9,10,11,12}
星期取值集合{1,2,3,4,5,6,7}

执行的时间点:

2月19号星期二23点23分
2月19号星期二23点37分
2月20号星期三0点23分
2月20号星期三0点37分
2月20号星期三1点23分
2月20号星期三1点37分
...
// 类推
1.1.4 示例 4 组合设置

设置其他的时间粒度可以参考上面三个实例,当然也可以组合设置:

0,30 10,11 1,2 11 *
分钟取值集合{0,30} 2个值可取
小时取值集合{10,11} 2个值可取
日期取值集合{1,2} 2个值可取
月份取值集合{11} 1个值可取
星期取值集合{1,2,3,4,5,6,7}

执行的全部时间点:

11月1号10点0分
11月1号10点30分
11月1号11点0分
11月1号11点30分
11月2号10点0分
11月2号10点30分
11月2号11点0分
11月2号11点30分
  • crontab

    crontab 命令常见于 类 Unix 的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρνο),原意是时间。

    12 引用 • 25 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...