The weekly Monday schedule
A cron every monday schedule fires once a week, on the day the day-of-week field names. The anchor in the panel above puts it at nine in the morning, because a weekly job almost always exists for a person — a digest, a report, a reminder that a certificate expires soon — and the hour matters as much as the day. Change the first two fields and the sentence under the input changes with you.
Numbers, names, and the day that answers to two
The field accepts 0 through 7. Sunday is 0 and Sunday is also 7, which is not a quirk so much as a truce between two conventions: ISO weeks start on Monday, the C library starts on Sunday, and cron declined to choose. Monday is 1 either way, so a Monday schedule is one of the safe ones, and so are Friday at 5 and Saturday at 6. It is Sunday that people write as 1, by counting from the wrong end.
Three-letter names sidestep the whole question. Writing MON reads correctly to whoever opens the
crontab next, and the parser treats it identically to the number. Case does not matter, and neither
does whether the rest of the line uses names or digits.
The union rule that turns weekly into daily
The single most expensive mistake in this field is combining it with the day-of-month field. Cron evaluates the two with OR when both are restricted, so naming the 1st of the month and Monday produces a job that runs on the 1st and on every Monday — roughly five times more often than intended, on days that look arbitrary from the outside.
The rule only applies when both are narrowed. Leave the day-of-month field as a star and the day-of-week field governs alone, which is what a weekly schedule wants. If you genuinely need the intersection — the first Monday of the month, say — the schedule cannot express it and the check belongs in the script.
A weekly job fails quietly
Frequency and feedback move together. A job that runs every minute tells you it is broken within minutes; a weekly one tells you next Monday, if anyone is looking. That asymmetry is worth an explicit signal — a heartbeat to a monitor, a message that says the run finished, anything that turns silence into an alert. Weekly work is also the easiest to leave running long after the reason for it disappeared, so a comment in the crontab saying why the line exists pays for itself.
Picking the hour
Nine in the morning suits a digest that someone reads with coffee. A build or a report that feeds that digest wants to be finished before it, which usually means a small hour on the same day, or the Sunday night before. A weekly job at midnight inherits every problem the midnight schedule has, including the timezone of the host and the two nights a year the clocks move, so the reasoning there applies here once a week instead of daily.
The variants above cover the same weekday written by name, the whole working week, and a twice-weekly pair. For anything else, the cron expression generator reads the line back before you commit it.