K
ken
HomeArticles🕐 Time Converter📋 JSON Tools🖼️ Base64 Image🔑 Password Generator Cron Expression🔤 Case Converter📱 QR Code#️⃣ Hash🔡 Encoding🔍 Regex Tester⚙️ Config Convert🔐 Encrypt/Decrypt
运维监控

Cron 表达式详解(附示例)

2026-04-25·5 min read

什么是 Cron 表达式?

Cron 表达式是一个字符串,用来定义任务在什么时间执行。它广泛用于 Linux 系统的定时任务、CI/CD 流水线、云函数调度等场景。

标准 Cron 格式

标准 Cron 表达式包含 5 个字段:

code双击代码复制
* * * * *
| | | | |
| | | | +---- 星期 (0-7, 0 和 7 都表示周日)
| | | +------ 月份 (1-12)
| | +-------- 日期 (1-31)
| +---------- 小时 (0-23)
+------------ 分钟 (0-59)

每个字段可以使用的特殊字符:

  • `*`:所有值(如 `*` 在小时字段表示每小时)
  • `,`:枚举多个值(如 `1,3,5`)
  • `-`:范围(如 `1-5` 表示 1 到 5)
  • `/`:步长(如 `*/5` 表示每 5 个单位)
  • 示例解读

  • `30 8 * * *` — 每天早上 8:30
  • `0 9 * * 1-5` — 每个工作日早 9:00
  • `*/15 * * * *` — 每 15 分钟
  • `0 0 1 * *` — 每月 1 号凌晨 0 点
  • `0 2 * * 0` — 每周日凌晨 2 点
  • 常用 Cron 表达式

  • `0 0 * * *` — 每小时整点
  • `0 */2 * * *` — 每 2 小时
  • `0 9 * * *` — 每天早上 9 点
  • `0 9,18 * * *` — 每天 9 点和 18 点
  • `0 0 * * 0` — 每周日凌晨
  • `0 0 1 * *` — 每月 1 号
  • `0 0 1 1 *` — 每年 1 月 1 号
  • `*/5 * * * *` — 每 5 分钟
  • `0 8-18 * * *` — 每天 8 点到 18 点每小时
  • `30 4 * * 1` — 每周一凌晨 4:30
  • 扩展格式:6 位和 7 位

    有些系统使用 6 位或 7 位格式,在最前面增加了秒或年。

    6 位(带秒):

    code双击代码复制
    0 */5 * * * *   每 5 秒

    7 位(带秒和年):

    code双击代码复制
    0 0 9 * * * 2026   2026 年每天早 9 点

    实际应用场景

    Linux Crontab

    bash双击代码复制
    # 每天凌晨 3 点备份数据库
    0 3 * * * /usr/bin/mysqldump -u root mydb > /backup/mydb.sql
    
    # 每周日清理日志
    0 0 * * 0 rm -rf /var/log/app/*.log
    
    # 每 10 分钟检查服务状态
    */10 * * * * /usr/local/bin/health-check.sh

    Node.js (node-cron)

    javascript双击代码复制
    const cron = require('node-cron')
    
    cron.schedule('0 9 * * *', () => {
      console.log('每天早上 9 点执行')
    })
    
    cron.schedule('*/30 * * * *', () => {
      console.log('每 30 分钟执行')
    })

    GitHub Actions

    yaml双击代码复制
    on:
      schedule:
        - cron: '0 2 * * *'  # 每天凌晨 2 点运行

    容易踩的坑

    1. **时区问题**:Cron 默认使用系统时区,跨时区服务器需要注意时区转换

    2. **分钟字段不能省略 `0`**:`* * * * *` 是每分钟执行,不是每小时

    3. **星期和日期同时设置**:同时指定日期和星期时,满足任意一个就会执行,这可能导致预期之外的执行频率

    4. **夏令时**:部分系统在夏令时切换时可能出现跳过或重复执行的情况

    总结

    Cron 表达式是定时任务的核心工具,语法简单但功能强大。掌握基本格式和常用模式可以覆盖绝大多数调度需求。记不住的时候,使用在线 Cron 解析工具可以快速验证表达式是否正确。