DevToolBox免费
博客

Cron 表达式实例:每 5 分钟、每天、每周、每月

8 分钟阅读作者 DevToolBox

Cron 表达式是在 Unix/Linux 系统上安排周期任务的标准方式。本指南涵盖最常用的 cron 模式和即用示例。

Cron 语法概览

标准 cron 表达式有 5 个字段:

┌───────────── 分钟 (0-59)
│ ┌─────────── 小时 (0-23)
│ │ ┌───────── 日 (1-31)
│ │ │ ┌─────── 月 (1-12)
│ │ │ │ ┌───── 星期 (0-7,0和7=周日)
│ │ │ │ │
* * * * *  command_to_execute

快速参考:常用 Cron 表达式

ExpressionDescription
* * * * *Every minute
*/5 * * * *Every 5 minutes
*/15 * * * *Every 15 minutes
*/30 * * * *Every 30 minutes
0 * * * *Every hour (at minute 0)
0 */2 * * *Every 2 hours
0 */6 * * *Every 6 hours
0 0 * * *Daily at midnight
0 6 * * *Daily at 6:00 AM
30 8 * * *Daily at 8:30 AM
0 0 * * 0Weekly (Sunday midnight)
0 9 * * 1Every Monday at 9:00 AM
0 9 * * 1-5Weekdays at 9:00 AM
0 0 1 * *First of every month (midnight)
0 0 1 1 *January 1st (midnight)
0 0 1 */3 *Every 3 months (quarterly)
0 0 * * 1,4Monday and Thursday at midnight
0 8-17 * * 1-5Every hour 8AM-5PM, weekdays

特殊字符说明

  • ** (星号) — 匹配该字段的每个可能值
  • // (斜杠) — 步长值。*/5 表示"每5个单位"
  • ,, (逗号) — 值列表。1,3,5 表示"1、3和5"
  • -- (破折号) — 范围。1-5 表示"1到5"

Examples with special characters:

# Every 5 minutes
*/5 * * * *

# At minutes 0, 15, 30, 45 of every hour
0,15,30,45 * * * *

# Every weekday (Monday-Friday) at 9 AM
0 9 * * 1-5

# Every Monday and Friday at 6 PM
0 18 * * 1,5

# Every 3 hours on weekdays
0 */3 * * 1-5

平台差异

Standard cron

标准 cron (crontab): 5 个字段

*/5 * * * * /path/to/script.sh
AWS EventBridge

AWS CloudWatch/EventBridge: 6 个字段,新增年份字段

cron(0/5 * * * ? *)
GitHub Actions

GitHub Actions: 标准 5 字段,使用 UTC

schedule:
  - cron: '*/5 * * * *'
Kubernetes

Kubernetes CronJob: 标准 5 字段

spec:
  schedule: "*/5 * * * *"

常见错误

  • 忘记时区 — Cron 默认使用系统时区。CI/CD 平台通常使用 UTC。
  • 使用 * * * * *(每分钟)— 每天运行 1440 次,确保你真的需要!
  • 混淆星期值 — 标准 cron 中周日是 0(或 7),某些系统是 1。
  • 不记录输出 — 重定向输出:*/5 * * * * /script.sh >> /var/log/cron.log 2>&1
  • 运行重叠 — 如果任务耗时超过间隔,使用 flock 或锁文件。

交互式测试你的 cron 表达式

Cron Expression Parser →

FAQ

如何设置每5分钟运行?

使用 */5 * * * * — 分钟字段的 */5 表示"每第5分钟"。

0 0 * * * 是什么意思?

每天午夜(00:00)运行。第一个 0 是分钟,第二个 0 是小时。

如何在每周一上午9点运行?

使用 0 9 * * 1 — 分钟=0,小时=9,任意日,任意月,星期=1(周一)。

*/5 和 0/5 有什么区别?

标准 cron 中它们等价 — 都表示"每第5分钟"。AWS 等平台特别支持 0/5 语法。

可以同时指定日期和星期吗?

标准 cron 中,如果两者都设置(非*),任一匹配时任务就会运行。AWS CloudWatch 要求其中一个使用 "?"。

𝕏 Twitterin LinkedIn
这篇文章有帮助吗?

保持更新

获取每周开发技巧和新工具通知。

无垃圾邮件,随时退订。

试试这些相关工具

Cron Expression ParserCron Expression Generator⏲️Crontab Generator🔍Cron Expression Parser

相关文章

Linux 文件权限详解:chmod 777、755、644 的含义

理解 Linux 文件权限、chmod 命令和八进制表示法。通过实例学习 chmod 777、755、644 的含义。

Serverless 平台的 Cron 调度:GitHub Actions、Vercel Cron 和 Cloudflare Workers

掌握各 Serverless 平台的 Cron 表达式,了解语法差异、时区陷阱和实用调度示例。