A cron expression is a simple tool used to automate the scheduling of tasks such as database updates, batch processing, or regular system maintenance. Data engineers, system admins, IT professionals, and other software engineers commonly use cron expressions to streamline repetitive tasks.
In the following sections, we’ll explain the basics of cron expression syntax, then provide a cheat sheet you can reference for creating or tweaking cron expressions.
To wrap up, we’ll show you a couple of tools you can use to generate, validate, or decode your cron expressions quickly.
A Quick Primer on Cron Expression Syntax
Cron expressions consist of five mandatory fields and one optional field. Each field represents a unit of time, i.e., minute, hour, day, month, etc. And each field in the expression is separated by a white space.
Here’s an example of a cron expression that runs a job every day at 2:30 in the morning:
|Minute||Hour||Day||Month||Day of Week|
The first field represents the minute, and the second field represents the hour. The remaining fields are set to * to indicate that the job should run every day of the month and week.
The fields in a cron expression can contain any of the following allowed values:
|Field Name||Mandatory||Allowed Values|
|Day of month||yes||1-31|
|Month||yes||1-12 or JAN-DEC|
|Day of week||yes||1-7 or SUN-SAT|
Cron Expression Cheat Sheet: Syntax, Special Characters and Examples
Cron Expression Syntax
* * * * * - - - - - | | | | | | | | | ----- Day of the week (0 - 7) (Sunday is both 0 and 7) | | | ------- Month (1 - 12) | | --------- Day of the month (1 - 31) | ----------- Hour (0 - 23) ------------- Minute (0 - 59)
* Any value , Value list separator - Range of values / Step values ? Non-specific value (used for Day of the week or Day of the month) L Last day of the month or week W Nearest weekday (used with Day of the month) # Weekday of the month (used with Day of the week)
Cron Expression Examples
0 0 * * * # Run at midnight every day 0 5 * * 1-5 # Run at 5:00 AM on weekdays 30 2 * * 1,4,7 # Run at 2:30 AM every Monday, Thursday, and Sunday 0 0 1-7 * * # Run at midnight on the first seven days of every month 0 0 1 * * # Run at midnight on the first day of every month 0 0 L * * # Run at midnight on the last day of every month 0 0 15W * * # Run at midnight on the nearest weekday to the 15th of every month 0 0 1W * * # Run at midnight on the nearest weekday to the 1st of every month 0 0 1-7 * 1#1 # Run at midnight on the first Monday of every month */5 * * * * # Run every 5 minutes
NOTE: You can use these expressions to schedule any command or script. For example, if you wanted to run a Python script every 5 minutes, regardless of the hour, day, or month, you could use the following command:
*/5 * * * * /usr/bin/python /path/to/script.py
Cron Expression Generators
If you need help creating, validating, or decoding a Cron expression, there’s no shortage of free cron expression generators you can use online.
This one from Rakko Tools lets you specify seconds, minutes, hours, days, months, and years by checking boxes. Then it automatically generates the proper syntax for you. You can also enter a cron expression, and the tool will decode it for you.
Create Data Pipelines and Schedule Them in a Single Interface
In the context of data engineering, cron expressions are handy for scheduling a variety of processing jobs. The trouble is you usually have to create your data pipeline in one tool and then create and run the cron expression in another tool. And if you’re using a generator to create your cron expression, that adds up to three different tools.
That’s a lot of tools for tasks that you could handle with one tab using StreamSets.
In one simple StreamSets interface, you can create simple and complex data pipelines. And without having to memorize the intricacies of cron syntax, you can use StreamSets to generate and run an expression.
To see StreamSets in action and use it to create and schedule resilient data pipelines, schedule a demo. And if you need additional guidance on using cron expressions in StreamSets, head over to our documentation on scheduling jobs.