Cron 语法与常见示例
基本语法
cron 的典型配置行格式为:
* * * * * command
- - - - -
| | | | |
| | | | +----- 星期 (0-7, 0 或 7 表示周日)
| | | +------- 月 (1-12)
| | +--------- 日 (1-31)
| +----------- 时 (0-23)
+------------- 分 (0-59)写入位置通常为:
- 当前用户:
crontab -e - 系统级:
/etc/crontab或/etc/cron.d/*
字段取值说明
*:任意值(每分钟、每小时、每天等)a,b,c:离散值列表,例如1,15,30a-b:范围,例如1-5表示 1 到 5*/n:步长,例如*/5表示每 5 分钟/小时- 组合使用:
1-10/2表示 1 到 10 之间每隔 2 个单位
星期字段常见取值:
0或7:周日1-6:周一到周六
常见示例
1. 每分钟执行一次
* * * * * /path/to/script.sh2. 每 5 分钟执行一次
*/5 * * * * /path/to/script.sh3. 每天凌晨 2 点执行
0 2 * * * /path/to/backup.sh4. 每天 9:30 执行
30 9 * * * /path/to/job.sh5. 每小时的第 10 分钟执行
10 * * * * /path/to/job.sh6. 每个工作日早上 9 点执行
0 9 * * 1-5 /path/to/job.sh7. 每月 1 日凌晨 1 点执行
0 1 1 * * /path/to/monthly.sh8. 每周日凌晨 3 点执行
0 3 * * 0 /path/to/weekly.sh9. 每天 9 点到 18 点之间,每隔 30 分钟执行
*/30 9-18 * * * /path/to/job.sh10. 在指定月份执行
例如:每年 3 月和 9 月的每天 4 点执行:
0 4 * 3,9 * /path/to/job.sh特殊字符串
部分系统支持如下简写(等价于常用表达式):
@reboot:系统重启后执行一次@hourly:每小时执行一次(等价于0 * * * *)@daily或@midnight:每天执行一次(等价于0 0 * * *)@weekly:每周执行一次(等价于0 0 * * 0)@monthly:每月执行一次(等价于0 0 1 * *)@yearly或@annually:每年执行一次(等价于0 0 1 1 *)
注意事项
- 编辑后可用
crontab -l查看配置是否生效 - 命令中的路径建议使用绝对路径
- 脚本内注意环境变量(如
PATH),必要时在脚本或 cron 中显式设置 - 输出可以重定向到日志文件,便于排查问题,例如:
0 2 * * * /path/to/backup.sh >> /var/log/backup.log 2>&1