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,30
  • a-b:范围,例如 1-5 表示 1 到 5
  • */n:步长,例如 */5 表示每 5 分钟/小时
  • 组合使用:1-10/2 表示 1 到 10 之间每隔 2 个单位

星期字段常见取值:

  • 07:周日
  • 1-6:周一到周六

常见示例

1. 每分钟执行一次

* * * * * /path/to/script.sh

2. 每 5 分钟执行一次

*/5 * * * * /path/to/script.sh

3. 每天凌晨 2 点执行

0 2 * * * /path/to/backup.sh

4. 每天 9:30 执行

30 9 * * * /path/to/job.sh

5. 每小时的第 10 分钟执行

10 * * * * /path/to/job.sh

6. 每个工作日早上 9 点执行

0 9 * * 1-5 /path/to/job.sh

7. 每月 1 日凌晨 1 点执行

0 1 1 * * /path/to/monthly.sh

8. 每周日凌晨 3 点执行

0 3 * * 0 /path/to/weekly.sh

9. 每天 9 点到 18 点之间,每隔 30 分钟执行

*/30 9-18 * * * /path/to/job.sh

10. 在指定月份执行

例如:每年 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