Crontab 定时任务语法
Crontab 是 Linux/Unix 标准的定时任务调度器,用 6 个字段 定义命令何时执行。
语法结构
分 时 日 月 星期 命令字段说明
| 字段 | 范围 | 说明 |
|---|---|---|
| 分钟 | 0–59 | 每小时的第几分钟执行 |
| 小时 | 0–23 | 每天的第几小时执行 |
| 日期 | 1–31 | 每月的第几天 |
| 月份 | 1–12 | 每年的第几月 |
| 星期 | 0–7 | 星期几(0 和 7 都表示周日) |
| 命令 | — | 要执行的命令或脚本 |
运算符
| 运算符 | 说明 | 示例 |
|---|---|---|
* | 每个可能的值 | 0 12 * * * 每天中午 |
, | 多个值 | 0 3,6 * * * 每天 3 和 6 |
- | 范围 | 20 8-12 * * * 每天 8–12 点的第 20 分 |
/n | 每隔 n | */5 * * * * 每 5 分钟 |
常用表达式
每 N 分钟:
*/5 * * * * 命令 # 每 5 分钟
*/15 * * * * 命令 # 每 15 分钟每小时:
0 * * * * 命令 # 每小时整点
30 9 * * * 命令 # 每天早上 9:30每天:
0 0 * * * 命令 # 每天零点
30 22 * * * 命令 # 每天晚上 10:30每周:
0 0 * * 0 命令 # 每周日零点
30 6 * * 1 命令 # 每周一早上 6:30每月:
0 0 1 * * 命令 # 每月 1 号零点
30 6 15 * * 命令 # 每月 15 号 6:30每年:
0 0 1 1 * 命令 # 1 月 1 日零点
0 0 25 12 * 命令 # 圣诞节零点实战示例
# 每 5 分钟运行一次
*/5 * * * * /path/to/script.sh
# 每天早上 5:30 备份
30 5 * * * /path/to/backup.sh
# 每月 8 号 7:30 跑报告
30 7 8 * * /path/to/report.sh
# 每月 10 号和 20 号的 3:30
30 3 10,20 * * /path/to/cleanup.sh
# 每天 8–11 点之间每小时的 25 分
25 8-11 * * * /path/to/check.shCrontab 管理命令
crontab -e # 编辑当前用户的定时任务
crontab -l # 查看当前用户的定时任务
crontab -r # 删除当前用户的定时任务
tail -f /var/log/cron # 查看 cron 执行日志注意事项
- 使用绝对路径 — cron 运行在最小环境中,不会加载你的 shell 配置
- 屏蔽邮件 — 命令末尾加
>/dev/null 2>&1避免每次执行发邮件 - 时区 — crontab 使用系统时区
- 日志输出 — 将 stdout/stderr 重定向到日志文件方便调试
# 带日志、屏蔽邮件的标准写法
0 0 * * * /usr/bin/backup.sh >/dev/null 2>&1