Cron 表达式 简介
Cron的历史可以追溯到UNIX操作系统的早期。Cron(来自希腊语"chronos",意为时间)是一种用于在预定时间执行计划任务的实用程序。
起源: Cron最早出现在1970年代早期的UNIX系统中。它的目的是为了在多用户的UNIX环境中,通过预定任务的执行时间来减轻系统资源的压力。
基本原理: Cron使用简单的文本文件(通常称为crontab文件)来存储和管理任务的调度信息。每个用户都有自己的crontab文件,其中包含他们的定时任务。
语法演变: Cron表达式的语法在演变过程中有所修改,但基本原理一直保持不变。最初的版本可能较为简单,但后来的变化使得Cron表达式更加灵活和强大。
标准化: 随着时间的推移,Cron的标准化得到了改进,以确保在不同的UNIX系统和类UNIX系统上的一致性。这有助于使Cron在各种环境中更易于使用和维护。
广泛应用: 由于其简单性和高度可定制性,Cron在UNIX、Linux等操作系统以及其他类UNIX系统中广泛应用。同时,许多其他系统和工具也采用了Cron的概念,提供类似的定时任务调度功能。
Cron 表达式 语法
Cron 表达式的语法包括五个时间字段,用空格分隔。这五个字段分别表示分钟、小时、天、月、星期。每个字段都可以包含单个数字、一系列数字、通配符 * 或者通过逗号 , 分隔的数字列表。以下是 Cron 表达式的基本语法
* * * * * | | | | | | | | | +-- 星期几 (0 - 7) (星期天可以用0或7表示) | | | +---- 月份 (1 - 12) | | +------ 天 (1 - 31) | +-------- 小时 (0 - 23) +---------- 分钟 (0 - 59) 通配符 * 表示每次都匹配
每分钟触发一次:
* * * * *
每小时的30分钟触发一次:
30 * * * *
每天的午夜触发一次:
0 0 * * *
每周的星期一的午夜(0点0分)触发一次:
0 0 * * 1
每月的第1天的午夜(0点0分)触发一次:
0 0 1 * *
每隔2小时触发一次:
0 */2 * * *
分配负载
在Jenkins的Cron表达式中,H 表示“Hashed值”。这是一个特殊的标记,用于在定期执行的任务中尽量均匀地分配负载,避免在特定时间点触发大量任务造成系统负载过重的情况。
举例来说,如果你有多个任务需要在同一时间点执行,使用 H 符号可以让这些任务尽量分散到不同的时间点执行,而不是同时触发,从而降低了系统在某个特定时刻的负载压力。
每分钟触发一次:
H * * * *
每小时的30分钟触发一次:
H 30 * * *
每天的午夜触发一次:
H 0 * * *
每周的星期一的午夜(0点0分)触发一次:
H 0 * * 1
每月的第1天的午夜(0点0分)触发一次:
H 0 1 * *
每隔2小时触发一次:
H */2 * * *