Cron expression for Every Tuesday
0 0 * * 2
Runs once a week, at midnight every Tuesday.
Next 5 runs (your local time)
These are shown in your browser’s timezone. The job itself runs in the scheduler’s timezone — often UTC — so the real run time can differ.
What people actually schedule with 0 0 * * 2
- Sending a marketing newsletter on the weekday with historically high open rates, avoiding the Monday inbox flood
- Running a weekly database optimization or VACUUM during a midweek low-traffic window away from Monday's deploy churn
- Pulling a weekly vendor or API report that the provider only refreshes on Tuesdays, so polling earlier returns stale data
Use 0 0 * * 2 on your platform
It’s the same 5-field expression everywhere — what changes is where you put it and which timezone it runs in.
Linux / crontab
0 0 * * 2 /path/to/your-command
Runs in the server’s local timezone — check it with timedatectl.
Full field reference: crontab(5) man page.
GitHub Actions
on:
schedule:
- cron: "0 0 * * 2"
GitHub Actions always runs scheduled jobs in UTC — there is no timezone setting, and runs can be delayed under load (official docs).
Kubernetes CronJob
spec:
schedule: "0 0 * * 2"
Defaults to UTC. Set spec.timeZone (Kubernetes 1.27+)
for a specific zone — see the
CronJob docs.
Quartz / Spring @Scheduled
Quartz uses 6 fields (seconds first): 0 0 0 * * 2. Watch out:
Quartz day-of-week is 1=SUN … 7=SAT (not 0–6), and day-of-month /
day-of-week use ? — double-check if your schedule touches those fields
(Quartz cron reference).
Gotchas with every tuesday schedules
- "Tuesday" in cron is
2, but a wrong timezone shifts the whole run to Monday or Wednesday.0 0 * * 2at UTC fires Monday 4pm in PST — landing it on the wrong weekday entirely. SetCRON_TZ=America/Los_Angeles(or your server'sTZ) before relying on the day-of-week. - Midnight Tuesday silently skips a holiday-shifted business calendar. If "every Tuesday" really means "first business day after Monday," a Monday holiday doesn't move the run —
0 0 * * 2fires regardless. Cron has no holiday awareness; gate the command with a calendar check like[ -f /etc/holidays/$(date +%F) ] && exit 0. - Tuesday-only jobs go stale undetected for a full week. Miss one run (reboot, lock left behind) and there's no retry until next Tuesday — a 7-day gap. Pair it with a heartbeat ping (
curl -fsS https://hc-ping.com/) so a skipped Tuesday alerts you in hours, not days.
Will you know if this job silently fails?
Cron jobs fail quietly — a server reboots, a path changes, or an error code is ignored — and nobody notices until the data is missing. A cron monitor (a dead-man’s-switch) alerts you when a scheduled job does not check in on time.
Monitor your cron jobs with UptimeRobot →
Disclosure: this is an affiliate link — we may earn a commission if you sign up, at no extra cost to you.
Is 0 0 * * 2 the right schedule?
If the goal is just "once midweek" and the exact day doesn't matter, every Wednesday sits dead-center in the work week with the same one-run cadence. Pick Tuesday only when something downstream genuinely keys off that specific day.
Or use the interactive cron generator & explainer, read the complete cron syntax guide, or pick another common schedule: