Crontab表达式助手
可视化构建和解析 Crontab 定时任务表达式,支持常用预设和自定义配置
可视化构建器
解析结果
输入表达式后点击「解析表达式」查看说明
语法速查
| 符号 | 含义 | 示例 |
|---|---|---|
* | 任意值 | * * * * * 每分钟 |
*/n | 每隔n | */5 * * * * 每5分钟 |
n-m | 范围 | 1-5 周一到周五 |
n,m | 列举 | 0,6 周日和周六 |
n | 固定值 | 0 2 * * * 每天2点 |
关于 Crontab表达式助手
- Crontab 是 Linux/Unix 系统的定时任务调度工具,表达式格式为:
分 时 日 月 周 命令 - 支持可视化构建(填写各字段)和反向解析(输入表达式查看含义)两种模式
- 提供 14 种常用预设,覆盖每分钟、每小时、每天、每周、每月等常见场景
操作说明
- 从预设下拉框选择常用场景,或手动填写各字段后点击「生成表达式」
- 在表达式输入框直接输入已有表达式,点击「解析表达式」查看中文说明
- 填写执行命令后,点击「生成表达式」可生成完整的 Crontab 行
- 支持 Ctrl+Enter 快捷键触发生成
注意事项
- 周字段中 0 和 7 都表示周日,1-6 表示周一到周六
- 日字段和周字段同时指定时,满足任一条件即执行(OR 关系)
- Crontab 最小精度为分钟,不支持秒级调度(需使用 systemd timer 或其他工具)
- 所有处理均在浏览器本地完成,不会上传任何数据
Crontab 知识详解
表达式字段结构
标准 Crontab 表达式由 5 个字段组成,字段之间用空格分隔:
┌─────────── 分钟 (0 - 59)
│ ┌───────── 小时 (0 - 23)
│ │ ┌─────── 日期 (1 - 31)
│ │ │ ┌───── 月份 (1 - 12)
│ │ │ │ ┌─── 星期 (0 - 7,0 和 7 均为周日)
│ │ │ │ │
* * * * * /path/to/command
│ ┌───────── 小时 (0 - 23)
│ │ ┌─────── 日期 (1 - 31)
│ │ │ ┌───── 月份 (1 - 12)
│ │ │ │ ┌─── 星期 (0 - 7,0 和 7 均为周日)
│ │ │ │ │
* * * * * /path/to/command
| 字段 | 取值范围 | 说明 |
|---|---|---|
| 分钟 | 0 – 59 | 每小时的第几分钟执行 |
| 小时 | 0 – 23 | 一天中的第几小时(24小时制) |
| 日期 | 1 – 31 | 每月的第几天 |
| 月份 | 1 – 12 | 一年中的第几月,也可用 Jan–Dec |
| 星期 | 0 – 7 | 0 和 7 均代表周日,1–6 为周一到周六,也可用 Sun–Sat |
特殊字符速查
| 字符 | 名称 | 含义 | 示例 | 说明 |
|---|---|---|---|---|
* | 通配符 | 匹配该字段所有合法值 | * * * * * | 每分钟执行一次 |
*/n | 步长 | 每隔 n 个单位执行一次 | */10 * * * * | 每10分钟执行 |
n-m | 范围 | 从 n 到 m 的连续值 | 0 9-17 * * 1-5 | 工作日9点到17点每小时整点 |
n,m | 列表 | 枚举多个离散值 | 0 8,12,18 * * * | 每天8点、12点、18点执行 |
n | 固定值 | 精确匹配某个值 | 30 2 * * * | 每天凌晨2:30执行 |
n-m/s | 范围+步长 | 在范围内每隔 s 执行 | 0-30/10 * * * * | 每小时0、10、20、30分执行 |
常用场景示例
| 场景 | 表达式 | 说明 |
|---|---|---|
| 每分钟 | * * * * * | 最高频率,适合心跳检测 |
| 每5分钟 | */5 * * * * | 轻量级轮询任务 |
| 每天凌晨备份 | 0 2 * * * | 低峰期执行数据库备份 |
| 工作日早报 | 0 8 * * 1-5 | 周一到周五早8点推送 |
| 每月账单 | 0 9 1 * * | 每月1日9点生成账单 |
| 每季度报告 | 0 0 1 1,4,7,10 * | 每季度首日凌晨生成报告 |
| 每周日清理 | 0 3 * * 0 | 周日凌晨3点清理临时文件 |
| 工作时间每小时 | 0 9-18 * * 1-5 | 工作日9点到18点每小时整点 |
| 每年元旦 | 0 0 1 1 * | 每年1月1日凌晨执行 |
Crontab vs systemd timer
| 特性 | Crontab | systemd timer |
|---|---|---|
| 最小精度 | 分钟 | 微秒(OnCalendar) |
| 日志 | 需手动重定向 | 自动写入 journald |
| 依赖管理 | 不支持 | 支持 After=、Requires= |
| 错过执行 | 直接跳过 | 可配置 Persistent=true 补跑 |
| 随机延迟 | 不支持 | 支持 RandomizedDelaySec= |
| 配置方式 | 单行表达式 | 两个 .timer + .service 文件 |
| 适用场景 | 简单定时任务,兼容性好 | 复杂依赖、需要日志追踪的任务 |
简单任务首选 Crontab;需要依赖控制、日志追踪或秒级精度时,推荐迁移到 systemd timer。
常见问题排查
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| 任务不执行 | cron 服务未启动 | systemctl start cron 或 service cron start |
| 脚本手动可运行,cron 不执行 | 环境变量缺失(PATH 不同) | 在 crontab 顶部添加 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
| 输出无法看到 | 未重定向输出 | 追加 >> /var/log/myjob.log 2>&1 |
百分号 % 被截断 |
crontab 中 % 是换行符 |
转义为 \%,如 date +\%Y-\%m-\%d |
| 每天执行两次 | 日字段和周字段同时指定 | 两者满足其一即执行(OR),只需保留一个字段,另一个设为 * |
| 修改后不生效 | 未通过 crontab -e 编辑 |
使用 crontab -e 编辑,保存后自动生效;直接编辑文件需重启 cron |
# 查看当前用户的 crontab
crontab -l
# 编辑 crontab(推荐方式)
crontab -e
# 查看 cron 执行日志(Debian/Ubuntu)
grep CRON /var/log/syslog | tail -20
# 查看 cron 执行日志(CentOS/RHEL)
tail -f /var/log/cron
crontab -l
# 编辑 crontab(推荐方式)
crontab -e
# 查看 cron 执行日志(Debian/Ubuntu)
grep CRON /var/log/syslog | tail -20
# 查看 cron 执行日志(CentOS/RHEL)
tail -f /var/log/cron