cron表达式语法

cron表达式语法

Cron表达式语法详解

Cron表达式是一种强大的时间调度工具,用于在Unix和类Unix系统中安排周期性任务。它由六或七个空格分隔的字段组成,每个字段代表时间表的一个特定部分。以下是Cron表达式的详细语法及其各个字段的含义:

一、基本结构

一个典型的Cron表达式包含六个或七个字段,格式如下:

* * * * * [命令] [参数] | | | | | +----- 星期几 (0 - 7) (星期天为0或7) | | | | +------- 月份 (1 - 12) | | | +--------- 日期 (1 - 31) | | +----------- 小时 (0 - 23) | +------------- 分钟 (0 - 59) +--------------- 秒 (0 - 59, 可选)

注意:秒字段是可选的,某些系统可能不支持。

二、各字段说明

  1. 分钟(Minute):范围从0到59。

    • 例如:0 表示每小时的第0分钟。
  2. 小时(Hour):范围从0到23。

    • 例如:14 表示下午2点。
  3. 日期(Day of Month):范围从1到31。

    • 例如:1 表示每个月的第一天。
  4. 月份(Month):范围从1到12(或使用缩写如Jan, Feb等)。

    • 例如:6 或 Jun 表示6月。
  5. 星期几(Day of Week):范围从0到7(0和7都表示星期天),或使用缩写如Sun, Mon等。

    • 例如:2 或 Tue 表示星期二。
  6. 命令(Command)及参数:要执行的命令或脚本,以及它的参数。

    • 例如:/usr/bin/find / -name "core" 在指定时间查找名为"core"的文件。
  7. 秒(Second)(可选):范围从0到59。

    • 例如:30 表示每分钟的第30秒。

三、特殊字符

  • 星号(*):表示任何值。例如,在分钟字段中使用*表示“每分钟”。
  • 逗号(,):用于列出不连续的值。例如,1,15 在小时字段中表示凌晨1点和下午3点。
  • 中划线(-):用于定义一个范围。例如,1-5 在小时字段中表示凌晨1点到5点之间的每一小时。
  • 斜杠(/):用于定义步长。例如,*/5 在分钟字段中表示每5分钟一次。

四、示例

  1. 每分钟执行一次:

    * * * * * /path/to/command
  2. 每天凌晨1点执行一次:

    0 1 * * * /path/to/command
  3. 每周一凌晨3:30执行一次:

    30 3 * * 1 /path/to/command
  4. 每月1号和15号的中午12点执行一次:

    0 12 1,15 * * /path/to/command
  5. 每两个小时执行一次(从午夜开始):

    0 */2 * * * /path/to/command
  6. 每分钟的第10秒和第40秒执行一次(需要支持秒的Cron实现):

    10,40 * * * * * /path/to/command

通过理解和使用Cron表达式,你可以灵活地安排各种定时任务,满足不同的需求。