开发者工具4 min read·
Cron 表达式速查表:5分钟掌握定时任务调度
Cron 表达式是 Linux 定时任务的核心。本文提供完整的 cron 格式说明、常用示例、工具验证方法,附赠速查表供日常参考。
Cron 表达式速查表:5分钟掌握定时任务调度
Cron 表达式是控制定时任务的核心工具。每个开发者都应该掌握它的格式和用法。
标准格式(5段式)
┌───────────── 分钟 (0-59)
│ ┌─────────── 小时 (0-23)
│ │ ┌───────── 日 (1-31)
│ │ │ ┌─────── 月 (1-12)
│ │ │ │ ┌───── 星期 (0-6, 0=周日)
│ │ │ │ │
* * * * *
特殊字符含义
| 字符 | 含义 | 示例 |
|---|---|---|
* |
任意值 | * * * * * = 每分钟 |
, |
列表 | 1,15,30 * * * * = 每小时1/15/30分 |
- |
范围 | 0 9-17 * * * = 上午9点到下午5点每小时 |
/ |
间隔 | */15 * * * * = 每15分钟 |
? |
任意(仅用于日/星期) | 无冲突时替代 * |
常用示例
基础
| 表达式 | 含义 |
|---|---|
0 * * * * |
每小时整点 |
0 0 * * * |
每天午夜 |
0 0 * * 0 |
每周日午夜 |
0 0 1 * * |
每月1日午夜 |
*/5 * * * * |
每5分钟 |
实用组合
| 表达式 | 含义 |
|---|---|
0 9 * * 1-5 |
工作日早上9点 |
30 18 * * * |
每天下午6:30 |
0 0 1,15 * * |
每月1号和15号午夜 |
*/15 9-17 * * 1-5 |
工作日上班时间每15分钟 |
0 22 * * 1-5 |
工作日晚上10点 |
0 0 * * 0,6 |
周末午夜 |
为什么 cron 有两个 "日" 字段?
日 (day-of-month) 和 星期 (day-of-week) 可以同时指定。Crontab 默认是 OR 逻辑 — 任一条件满足即执行。
# 每月1号 AND 周五都会跑(可能重复)
0 0 1 * * # 每月1号
0 0 * * 5 # 每周五
# 这两个会同时生效
解决方案:问号 ?
# 仅当月日指定,不关心星期
0 0 1 * ?
常见错误
❌ 忘记星期从0开始
# 周日 = 0,不是 7
0 0 * * 7 # 这个永远不会跑!
0 0 * * 0 # 正确
❌ 月份从1开始,不是0
# ❌ 错误
0 0 * 0 * # 0月不存在
# ✅ 正确
0 0 * 1 * # 1月
❌ 日和星期同时用 *
# ⚠️ 高风险:可能一天跑多次
0 0 * * * # 日=任意 AND 星期=任意 = 每天
快速验证
输入任何 cron 表达式,自动解析为人类可读描述,并显示接下来5次的计划执行时间。
工具推荐
| 工具 | 用途 |
|---|---|
| Crontab.guru | 在线 cron 表达式编辑器 |
| Cron Parser | 验证 + 显示下次运行 |
| Cron job monitor | 监控定时任务是否执行 |
Python / JavaScript / PHP 解析
# Python
from croniter import croniter
cron = croniter('0 9 * * 1-5', datetime.now())
print(cron.get_next(datetime))
// JavaScript
import { parseCron } from '@toolblip/mcp';
parseCron('0 9 * * 1-5');
// PHP
$cron = Cron\CronExpression('0 9 * * 1-5', new DateTime());
echo $cron->getNextRunDate()->format('Y-m-d H:i');
掌握 cron 表达式,让定时任务调度变得简单。记住 5 个字段,多练习 — 30分钟内你就能熟练运用。
#Cron#定时任务#Linux#调度#DevOps
Toolblip Team
Writing about developer tools, web performance, and the tools that make building faster.

