Cron 表达式生成器:Linux 定时任务表达式怎么写,在线生成不求人
# Cron 表达式生成器:Linux 定时任务表达式怎么写,在线生成不求人
Linux 服务器上的定时任务(crontab)、数据备份、日志清理、定时爬虫,都离不开 Cron 表达式。但 `*/5 * * * *` 这种火星文,新手看了就头大。今天讲透 Cron 表达式的语法,再推荐一个可视化生成工具。
## Cron 表达式是什么
Cron 是类 Unix 系统里的定时任务调度语法,5 个字段分别表示分、时、日、月、周:
```
分 时 日 月 周
*/5 * * * *
```
| 字段 | 取值范围 | 说明 |
|------|---------|------|
| 分 | 0-59 | 第几分钟执行 |
| 时 | 0-23 | 第几小时执行 |
| 日 | 1-31 | 每月第几天 |
| 月 | 1-12 | 第几个月 |
| 周 | 0-7 | 星期几(0 和 7 都是周日) |
注意:在标准 crontab 里,日和周同时指定时取「或」关系(部分系统实现不同),容易踩坑。
## 常用符号
| 符号 | 含义 | 示例 | 解释 |
|------|------|------|------|
| `*` | 任意值 | `* * * * *` | 每分钟 |
| `,` | 列举 | `0 9,18 * * *` | 每天 9 点和 18 点 |
| `-` | 区间 | `0 9-18 * * *` | 9 点到 18 点每小时 |
| `/` | 步长 | `*/10 * * * *` | 每 10 分钟 |
| `?` | 不指定 | 常见于 Quartz | 日/周字段用 |
经典示例:
- 每天凌晨 2 点备份:`0 2 * * *`
- 每 30 分钟同步一次:`*/30 * * * *`
- 每周一早上 9 点发周报:`0 9 * * 1`
- 每月 1 号零点清理日志:`0 0 1 * *`
## 在线 Cron 生成器
手动拼 Cron 表达式容易出错,尤其是遇到「每月的最后一个工作日」这种复杂场景。我们开发的 [Cron 表达式生成器](https://zjunwei.com/seo-tools/cron-generator.html) 免费使用,支持:
- **可视化配置**:通过下拉选择分、时、日、月、周,所见即所得
- **实时生成**:每次选择立即生成标准 Cron 表达式
- **示例库**:内置几十条常用定时任务示例,直接抄作业
- **表达式解析**:粘贴表达式自动解析出执行时间说明,验证是否正确
## 与服务器 crontab 配合
生成表达式后,在服务器上使用:
```bash
crontab -e
# 添加一行,例如每天凌晨 2 点执行脚本
0 2 * * * /root/backup.sh >> /var/log/backup.log 2>&1
```
改完可以用 `crontab -l` 检查。注意:服务器时区要和你期望的执行时间对齐(一般 `timedatectl` 确认)。
## 常见问题
**Q:Cron 和 Quartz 的 Cron 一样吗?**
A:不完全一样。Quartz(Java)多一个可选的「秒」字段,用 `?` 表示日/周不指定,还有 L、W、C 等特殊符号。在线工具一般同时支持两种模式。
**Q:为什么我的定时任务没执行?**
A:先看 crontab 服务是否运行(`systemctl status crond`),再确认脚本有执行权限、路径写的是绝对路径,最后查日志 `/var/log/cron`。
**Q:分钟级任务有最小间隔吗?**
A:标准 crontab 最小是每分钟(`* * * * *`),要秒级调度得用 systemd timer 或其他工具。
## 总结
Cron 表达式看似复杂,掌握五个字段和几个符号就够用了。拿不准的时候,打开 [Cron 表达式生成器](https://zjunwei.com/seo-tools/cron-generator.html),可视化配置、实时生成,还能解析验证,事半功倍。
💬 暂无评论