Cron on the First Monday of Every Month
Schedule a cron job on the first Monday of each month using 0 9 1-7 * 1. Complete field-by-field breakdown for first-weekday-of-month patterns.
Cron Expression
0 9 1-7 * 1
Field Breakdown
| Field | Value | Meaning |
|---|---|---|
| Minute | 0 | At 0 |
| Hour | 9 | At 9 |
| Day of Month | 1-7 | From 1 to 7 |
| Month | * | Every month (1–12) |
| Day of Week | 1 | At Monday |
Detailed Explanation
The cron expression 0 9 1-7 * 1 schedules a task to run at 9:00 AM on Monday, but only during the first seven days of each month, effectively targeting the first Monday.
Field-by-field breakdown:
0(Minute): At minute 0. The task fires at the top of the hour.9(Hour): At hour 9 (9 AM). The task runs at the start of the business day.1-7(Day of Month): Days 1 through 7. This range covers the first week of the month, guaranteeing exactly one Monday falls within it.*(Month): Every month from January through December. No restriction on which month.1(Day of Week): Monday only. The value 1 represents Monday in standard cron.
Important note about cron semantics: In standard cron, when both Day of Month and Day of Week are specified (not *), the job runs when EITHER condition is true (OR logic), not when both are true (AND logic). This means this expression will run on ALL Mondays AND on days 1-7 regardless of day of week. To truly target only the first Monday, wrap your command with a check: [ "$(date +\%d)" -le 7 ] && your_command and use 0 9 * * 1 as the cron expression, or use the expression as-is and add a day-of-week check in your script. This expression is supported by standard cron on Linux/macOS, as well as cloud services like AWS CloudWatch, Google Cloud Scheduler, and GitHub Actions.
Use Case
Ideal for scheduling monthly all-hands meeting reminders and agenda distribution on the first Monday of each month at the start of business.
Try It — Interactive Builder
at min 0, at hour 9, on day 1-7, on DOW 1
Next 10 Executions
Ctrl+Shift+C to copy expression