Monday morning kick-off
The weekly-report and sprint-kickoff schedule: fires at 08:00 every Monday, and not on any of the other six days.
Last updated
In plain English
- Fires at 08:00 every Monday
- 52 runs per year
Why it’s written this way
Hour 8, minute 0, day-of-week 1 — cron counts Monday as 1 and Sunday as 0 (or 7), so this is unambiguously the first weekday, not 'the first day of the week' under every calendar convention.
This is the natural expression for a once-a-week job anchored to a specific weekday, as opposed to the @weekly macro, which is fixed to Sunday midnight and can't be moved without switching to the five-field form anyway.
Edge cases to know
- →A public holiday that falls on Monday doesn't get skipped — the report or kickoff fires exactly the same, possibly to an inbox nobody is reading.
- →If the job depends on data finalized over the weekend, an 08:00 fire time can race a Sunday-night batch that hasn't finished yet — pad the hour if upstream jobs are inconsistent.
- →Moving this to Tuesday is a one-character edit (1 → 2), but it's just as easy to change the wrong field by mistake — always re-read the field's position, not just the digit.
Part by part
- 0 8
- Eight in the morning, minute zero. Early enough to be ready before the working day and late enough that overnight maintenance has finished.
- * * 1
- Day-of-month and month open, day-of-week fixed to Monday. Monday is 1 because the field starts at Sunday, which is 0.
Common mistakes
0 8 * * 1 /app/report.sh --date=$(date +%Y-%m-%d)The percent sign is special in a crontab — it is turned into a newline, and everything after the first one becomes standard input to the command. The date format silently breaks the line.
0 8 * * 1 /app/report.sh --date=$(date +\%Y-\%m-\%d)0 8 * * 1 with the crontab file lacking a trailing newlineSeveral cron implementations ignore the final line if the file does not end in a newline. The entry is present in crontab -l and never fires, which is a genuinely baffling failure.
0 8 * * MONDay names are supported in Vixie cron and not everywhere that accepts cron syntax. The numeric form is the portable one, and a comment gives the readability the name would have.
Questions
Why does my command break when it contains a percent sign?
Cron treats an unescaped percent as a newline, sending the remainder to the command as input. Any date format string needs each percent escaped with a backslash, which is the single most common crontab syntax trap.
How do I test the line without waiting a week?
Run the command portion by hand first with env -i to simulate cron's empty environment. That catches PATH and variable problems, which are far more common than the schedule itself being wrong.
What happens to a Monday that is a public holiday?
It runs. Cron has no calendar beyond the fields you give it, so a holiday check belongs in the script — usually against a list you maintain, since no portable source exists.
How do I edit a crontab safely?
Keep it in version control and install it with crontab from that file, rather than editing live with crontab -e. A stray keystroke in the editor can remove a line with no record of what was there.