4.8.6. Defining when your graphs are running (CRON expressions)

<< Click to Display Table of Contents >>

Navigation:  4. How to use Anatella? > 4.8. Scheduling Anatella Graphs >

4.8.6. Defining when your graphs are running (CRON expressions)

 

When we use the Anatella interface to schedule the excecution of our graphs inside Jenkins, in the second configuration screen, we can use a free-form “CRON expression” to define precisely when the graph will run. See here:
 

clip1228

 

 
In the same way, using the classical Web interface to Jenkins, we can define when our Anatella graphs are running using the “Build periodically” option that takes a Free-form parameter named “Schedule” that is also a “CRON expression”:

 

ANATEL~1_img195

 

 

These “CRON expressions” are strings that follow the syntax of the famous UNIX tool named “CRON” (with minor differences). Specifically, each line consists of 5 fields separated by TAB or whitespace. These 5 fields are “MINUTE HOUR DOM MONTH DOW”:

 

 
More precisely, we have:
 

1.MINUTE: Minutes within the hour (0–59)
 

2.HOUR: The hour of the day (0–23)
 

3.DOM: The day of the month (1–31)
 

4.MONTH: The month (1–12)
 

5.DOW: The day of the week (0–7) where 0 and 7 are Sunday.

 

 
To specify multiple values for one field, the following operators are available. In the order of precedence:
 

* : specifies all valid values
 

M-N :specifies a range of values
 

*/X :specifies steps by intervals of X through the whole valid range
 

M-N/X :specifies steps by intervals of X through the specified range
 

A,B,...,Z :enumerates multiple values</li>

 

 
To allow periodically scheduled tasks to produce even load on the system, the symbol H (for “hash”) should be used wherever possible. For example, using “0 0 * * *” for a dozen daily jobs will cause a large spike at midnight. In contrast, using “H H * * *” would still execute each job once a day, but not all at the same time, better using limited resources.

 

 
The H symbol can be used with a range. For example, “H H(0-7) * * *” means to launch a job between 00:00 AM (midnight) to 7:59 AM. You can also use step intervals with H, with or without ranges. The H symbol can be thought of as a random value over a range, but it actually is a hash of the job name, not a random function, so that the value remains stable for any given project.

Beware that for the day of month field, short cycles such as “*/3” or “H/3” will not work consistently near the end of most months, due to variable month lengths. For example, “*/3” will run on the 1st, 4th, …31st days of a long month, then again the next day of the next month. Hashes are always chosen in the 1-28 range, so “H/3” will produce a gap between runs of between 3 and 6 days at the end of a month. (Longer cycles will also have inconsistent lengths but the effect may be relatively less noticeable.)

 

 
Empty lines and lines that start with # will be ignored as comments.

 

 
In addition, the following codes:
 

           @yearly      @annually     @monthly      @weekly      @daily    @midnight    @hourly    

 
…are supported as convenient aliases. These use the hash system for automatic balancing. For example, the code “@hourly” is the same as “H * * * *” and could mean at any time during the hour. The code “@midnight” actually means some time between 00:00 AM (midnight) and 2:59 AM.

 

 
Some examples:

 

Description

CRON String

Every day between midnight and 2:59 AM

@midnight       or     H H(0-2) * * *

Every fifteen minutes (perhaps at :07, :22, :37, :52):

H/15 * * * *

Every ten minutes in the first half of every hour (three times, perhaps at :04, :14, :24)

H(0-29)/10 * * * *

 

Once every two hours at 45 minutes past the hour starting at 9:45 AM and finishing at 3:45 PM every weekday (excluding weekends).

45 9-16/2 * * 1-5

 

Once in every two hours slot between 9 AM and 5 PM every weekday (perhaps at 10:38 AM, 12:38 PM, 2:38 PM, 4:38 PM)

H H(9-16)/2 * * 1-5

 

Once a day on the 1st and 15th of every month except December

H H 1,15 1-11 *

Once a week, every sunday

H H * * 0