Cron Guides

In-depth reference on cron expressions, crontab, time zones and production scheduling

Seven in-depth references on cron expressions, crontab and scheduled jobs

The builder and explainer answer the question "what does this expression do". These guides answer everything that comes after it: how to install the job, which clock it runs against, why it did not fire, and what to add before it carries anything important.

Start here

Which guide do you need?

Common questions and where they are answered
If you are asking…Read
"What's the expression for every 15 minutes on weekdays?"60 cron examples
"How do I run a job on the last day of the month?"60 cron examples
"Where do I actually put this line?"Crontab guide
"Why does my date +%Y command break in cron?"Crontab guide
"It works in my terminal but not in cron."Troubleshooting
"My job runs an hour later than I expected."Time zones & DST
"Why did my job run twice last Sunday?"Time zones & DST
"Spring rejects the expression that works on my server."Quartz vs Unix cron
"Does this syntax work on Kubernetes / GitHub Actions / AWS?"Cron by platform
"How do I stop two copies of the job running at once?"Best practices
"How would I even know if this job stopped running?"Best practices

The short version

If you read nothing else, these five points cover the mistakes that come up most often:

  1. Read the run times, not the syntax. A valid expression can encode a completely different schedule. The Explainer computes the next five runs for any expression.
  2. Never restrict day-of-month and day-of-week together. Standard cron runs when either matches, so 0 0 13 * 5 fires on the 13th and on every Friday.
  3. Cron has no environment. No .bashrc, no aliases, a bare PATH. Use absolute paths for everything, including the interpreter.
  4. The server's time zone is probably UTC. Confirm it before scheduling anything a human is waiting for, and stay out of the 01:00–03:00 local window.
  5. Cron does not tell you when a job stops running. Alert on the absence of a successful check-in, not on errors.

Shorter, question-by-question answers are in the cron FAQ. If you just need the expression for a specific interval, the schedule reference has a page per schedule — every 5 minutes, hourly, weekdays, last day of the month and so on.