Skip to content
Toolblip
← Blog
开发者工具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 解析器 — 输入表达式查看下次运行时间 →

输入任何 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.