Run a Cron Job Every Week
To run a job once a week, set a single day-of-week and time. For example, 0 0 * * 0 runs at midnight every Sunday. You can also use the @weekly shortcut, which is the same as 0 0 * * 0.
The expression
0 0 * * 0 runs at 00:00 every Sunday. Fields: minute (0), hour (0), day-of-month (*), month (*), day-of-week (0 = Sunday).
The @weekly shortcut
Most cron implementations accept @weekly as an alias for 0 0 * * 0: @weekly /usr/bin/bash /path/report.sh.
Choose a different day and time
Change the last field for the day and the first two for the time. 30 8 * * 1 runs at 08:30 every Monday. Sunday is 0 (or 7), Monday 1, up to Saturday 6.
FAQ
What is the cron expression to run weekly?
0 0 * * 0 runs at midnight every Sunday. Change the day-of-week (last field) and the hour/minute to pick a different weekly slot.
Is @weekly the same as 0 0 * * 0?
Yes. @weekly is a shortcut for 0 0 * * 0 — midnight on Sunday — supported by most cron daemons.
How do I run a weekly job on Monday morning?
Use 30 8 * * 1 for 08:30 every Monday. The 1 is Monday; adjust the hour and minute to your time.