温馨提示×

Linux Crontab时间格式你了解吗

小樊
93
2025-09-27 07:18:23
栏目: 智能运维

Linux Crontab时间格式详解
Crontab是Linux系统中用于设置周期性任务的工具,其时间格式由5个核心时间字段1个命令字段组成,遵循严格的规则定义任务执行时间。

一、基础时间字段结构

Crontab的时间格式为:* * * * * command(用户级任务),其中5个时间字段从左到右依次表示:

  • 分钟(0-59):控制任务在每小时的具体分钟执行;
  • 小时(0-23):控制任务在每天的具体小时执行;
  • 日期(1-31):控制任务在每月的具体日期执行;
  • 月份(1-12):控制任务在每年的具体月份执行;
  • 星期(0-7):控制任务在每周的具体星期几执行(0和7均代表星期日)。
    命令字段是必填项,用于指定要执行的脚本或命令(需使用绝对路径,如/usr/bin/backup.sh)。

二、特殊字符及用法

Crontab通过特殊字符实现灵活的时间配置,常见字符及作用如下:

  • *(通配符):匹配字段的所有可能值。例如* * * * *表示“每分钟执行一次”;0 * * * *表示“每小时的第0分钟执行”。
  • ,(枚举符):分隔多个离散值。例如1,15,30,45 * * * *表示“每小时的第1、15、30、45分钟执行”;1,3,5 * * * *表示“每周的周一、周三、周五执行”。
  • -(范围符):指定连续值的范围。例如8-17 * * * *表示“每天的8点到17点每小时执行”;1-5 * * * *表示“每周的周一到周五执行”。
  • /(步长符):指定时间间隔。例如*/5 * * * *表示“每5分钟执行一次”(等价于0,5,10,...,55);*/2 * * * *表示“每2分钟执行一次”。

三、可选特殊字符串

除基础时间字段外,Crontab支持以下特殊字符串简化配置(位于时间字段之前):

  • @reboot:系统启动时执行一次;
  • @yearly/@annually:每年1月1日执行一次;
  • @monthly:每月1日执行一次;
  • @weekly:每周日执行一次;
  • @daily/@midnight:每天00:00执行一次;
  • @hourly:每小时0分钟执行一次。

四、示例说明

以下是常见场景的Crontab时间配置示例:

  • 每分钟执行* * * * * /usr/bin/command
  • 每小时的第15分钟执行15 * * * * /usr/bin/command
  • 每天凌晨2点执行0 2 * * * /usr/bin/command
  • 每周一至周五的9:30执行30 9 * * 1-5 /usr/bin/command
  • 每月1号和15号的10:00执行0 10 1,15 * * /usr/bin/command
  • 每30分钟执行一次*/30 * * * * /usr/bin/command
  • 每年1月1日凌晨0点执行0 0 1 1 * /usr/bin/command

五、注意事项

  • 日期与星期的逻辑关系:当日期(第3字段)和星期(第5字段)同时设置为非*时,任务会在两者条件均满足时执行(逻辑AND)。例如0 0 1 * 1表示“每月1号且为星期一的0点执行”。
  • 字段取值范围:月份和星期字段支持数字与英文缩写混用(如Jan代表1月,Mon代表星期一),但需注意大小写不敏感。
  • 命令路径问题:Crontab运行时不会加载用户环境变量,建议使用命令的绝对路径(可通过which command获取),或在脚本中设置环境变量。

0