This guide provides a comprehensive overview of cron syntax used in fib-flow for scheduling tasks. Whether you're new to cron expressions or need a quick reference, you'll find detailed explanations of the syntax, fields, special characters, and practical examples to help you schedule your tasks effectively.
Cron expressions are used to define the schedule for recurring tasks. The syntax consists of six fields separated by spaces:
* * * * * *
┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ |
│ │ │ │ │ └ day of week (0 - 7, 1L - 7L) (0 or 7 is Sun)
│ │ │ │ └───── month (1 - 12)
│ │ │ └────────── day of month (1 - 31, L)
│ │ └─────────────── hour (0 - 23)
│ └──────────────────── minute (0 - 59)
└───────────────────────── second (0 - 59, optional)
- Second: (optional) Specifies the exact second when the task should run. Valid values are 0-59.
- Example:
30 * * * * *
runs at the 30th second of every minute
- Example:
- Minute: Specifies the exact minute when the task should run. Valid values are 0-59.
- Example:
0 15 * * * *
runs at the 15th minute of every hour
- Example:
- Hour: Specifies the exact hour when the task should run. Valid values are 0-23.
- Example:
0 0 8 * * *
runs at 8:00 AM every day
- Example:
- Day of Month: Specifies the day of the month when the task should run. Valid values are 1-31. The character
L
can be used to specify the last day of the month.- Example:
0 0 0 15 * *
runs at midnight on the 15th of every month
- Example:
- Month: Specifies the month when the task should run. Valid values are 1-12 or JAN-DEC.
- Using numbers:
0 0 0 1 6 *
runs on June 1st at midnight - Using names:
0 0 0 1 JUN *
(same as above)
- Using numbers:
- Day of Week: Specifies the day of the week when the task should run. Valid values are 0-7 (where 0 and 7 are both Sunday) or SUN-SAT. The character
L
can be used to specify the last day of the week.- Using numbers:
0 0 0 * * 1
runs every Monday at midnight - Using names:
0 0 0 * * MON
(same as above) - Last occurrence:
0 0 0 * * 5L
runs on the last Friday of every month
- Using numbers:
*
- Matches any value,
- Separates items in a list (e.g.,MON,WED,FRI
)-
- Specifies a range (e.g.,1-5
)/
- Specifies increments (e.g.,*/15
for every 15 minutes)L
- Last day of the month or week (e.g.,L
in the day-of-month field means the last day of the month)
Note: The W
character (nearest weekday) is not supported.
Here are some common use cases with explanations:
* * * * * *
- Every second- Most frequent possible execution
0 */5 * * * *
- Every 5 minutes- Useful for frequent background tasks
0 0 0 * * *
- Every day at midnight- Common for daily maintenance tasks
0 0 9 * * 1-5
- Every weekday at 9 AM- Typical for business hour operations
0 0 12 1 * *
- At noon on the first day of every month- Suitable for monthly reports or billing tasks
0 0 0 L * *
- At midnight on the last day of every month- Perfect for end-of-month processing
0 0 9-17 * * 1-5
- Every hour from 9 AM to 5 PM on weekdays- Business hours operations
0 30 9 1,15 * *
- At 9:30 AM on the 1st and 15th of every month- Bi-monthly scheduled tasks
For more complex scheduling scenarios, consult the cron-parser documentation.