插件窝 干货文章 cron定时任务的语法是什么 cron定时任务表达式怎么写教程

cron定时任务的语法是什么 cron定时任务表达式怎么写教程

表示 command 字段 执行 646    来源:    2025-05-12

Cron定时任务语法教程

基本语法结构

Cron表达式由5个或6个字段组成,表示不同的时间单位,格式如下:

* * * * * [command]
或
分钟 小时 日期 月份 星期 [command]

对于某些系统(如Quartz调度器),可能使用6个字段,第一个字段表示秒:

秒 分钟 小时 日期 月份 星期 [command]

各字段含义及取值范围

字段位置 字段含义 取值范围 允许的特殊字符
1 分钟 0-59 , - * /
2 小时 0-23 , - * /
3 日期 1-31 , - * ? / L W
4 月份 1-12 , - * /
5 星期 0-7 (0和7都代表周日) , - * ? / L #

特殊字符说明

  1. * (星号):表示匹配任意值

    • 在分钟字段表示"每分钟"
    • 在小时字段表示"每小时"
  2. , (逗号):用于指定多个值

    • 0,15,30,45 * * * * 表示每小时的第0、15、30、45分钟
  3. - (连字符):用于指定范围

    • 0 9-17 * * * 表示每天9点到17点之间的整点
  4. / (斜杠):用于指定步长

    • */15 * * * * 表示每15分钟
    • 0 */2 * * * 表示每2小时
  5. ? (问号):仅用于日期和星期字段,表示"不指定值"

  6. L (Last):表示"最后"

    • 0 0 L * * 表示每月最后一天的午夜
    • 0 0 * * 5L 表示每月最后一个星期五

常用示例

  1. 每分钟执行一次

    * * * * * [command]
    
  2. 每5分钟执行一次

    */5 * * * * [command]
    
  3. 每小时的第30分钟执行

    30 * * * * [command]
    
  4. 每天凌晨1点执行

    0 1 * * * [command]
    
  5. 每周一上午9点执行

    0 9 * * 1 [command]
    
  6. 每月1号凌晨0点执行

    0 0 1 * * [command]
    
  7. 每天上午9点到下午5点,每小时执行一次

    0 9-17 * * * [command]
    
  8. 每周工作日(周一到周五)上午10点执行

    0 10 * * 1-5 [command]
    
  9. 每月最后一天的午夜执行

    0 0 L * * [command]
    
  10. 每30秒执行一次(需要特殊处理,通常通过sleep实现)

    * * * * * [command]
    * * * * * sleep 30; [command]
    

注意事项

  1. 不同系统的cron实现可能有细微差别,特别是对于星期字段,有些系统0表示周日,有些系统7表示周日

  2. 命令中的百分号(%)需要转义,使用反斜杠(\%),否则会被解释为换行符

  3. 环境变量可能与交互式shell不同,建议在脚本中设置完整路径

  4. 输出默认会发送邮件给用户,若要禁止输出可以使用重定向:

    * * * * * [command] >/dev/null 2>&1
    
  5. 编辑crontab文件通常使用crontab -e命令

希望这个教程能帮助你理解和使用cron定时任务!