minuteform.

Minuteform / Every day at a set time

$ crontab -e

Cron every day at a specific time

A daily cron job is five fields with a fixed minute and hour and stars for the rest. The schedule is easy; the details are in the time zone the scheduler uses, the daylight-saving hour, and jobs missed while a machine was off.

Written 20 Oct 2026Five-field cronExamples open in the tool

Daily at a set time is M H * * *: minute first, then hour. Midnight is 0 0 * * *, 9 AM is 0 9 * * *, 2:30 AM is 30 2 * * *. Whose midnight depends on the scheduler’s time zone, so preview it in the zone your server uses.

01Common daily times

Each expression links to a preview of its next runs. Hours use the 24-hour clock.

ExpressionRunsNote
0 0 * * *Every day at 00:00Same as @daily and @midnight in cronie and Kubernetes; GitHub Actions does not accept nicknames.
0 9 * * *Every day at 09:00
0 12 * * *Every day at 12:00
0 18 * * *Every day at 18:006 PM
30 2 * * *Every day at 02:30Inside the daylight-saving hour in many zones; see below.
0 9,21 * * *Twice a day, 09:00 and 21:00A list in the hour field.
0 9 * * 1-509:00 Monday to FridayDay of week 1–5.
0 10 * * 6,010:00 Saturday and SundaySunday is 0 or 7.
0 9 */2 * *09:00 on the 1st, 3rd, 5th … of each monthNot strictly every other day: after the 31st comes the 1st, two days in a row.

02The most common mistake: a star in the minute field

* 9 * * * does not mean “once at 9”. The star matches every minute, so the job runs 60 times, from 09:00 to 09:59. Put the minute first: 0 9 * * *. Minuteform’s plain-English line shows the difference straight away: compare it.

03Whose midnight? Time zones by scheduler

SchedulerTime zone usedMidnight in New York
crontab (Vixie, Debian, Ubuntu)The system time zone (check with timedatectl or date)0 0 * * * on a server set to America/New_York
cronie (Fedora, RHEL)System time zone, or CRON_TZ=America/New_York above the lineCRON_TZ=America/New_York then 0 0 * * *
GitHub ActionsUTC unless you add timezone: with an IANA namecron: '0 0 * * *' with timezone: "America/New_York"
Kubernetes CronJobThe controller’s zone unless timeZone: is setschedule: "0 0 * * *", timeZone: "America/New_York"

Without a zone setting, a UTC schedule moves against local time twice a year. 0 13 * * * in UTC is 09:00 in New York in summer and 08:00 in winter. Preview midnight in New York.

04Daily jobs and daylight saving

In zones that change clocks, one local hour is skipped in spring and one is repeated in autumn, usually between 01:00 and 03:00. A daily job in that hour can be skipped or run twice, and cron implementations do not all agree on what happens.

For example, 02:30 did not exist in New York on 8 March 2026. Minuteform’s preview of 30 2 * * * therefore goes from 7 March to 9 March. If a daily job must run exactly once, schedule it outside 01:00–03:59 local time or run the scheduler in UTC. The cron and daylight saving page lists every change in 2026–2027 for 28 zones.

05If the job did not run

FAQQuestions people ask

What is the cron expression for every day at midnight?

0 0 * * *: minute 0, hour 0, every day. cronie and Kubernetes also accept @daily or @midnight; GitHub Actions does not, so use the five fields there.

How do I run a cron job at 9 AM every day?

Use 0 9 * * *. For 9 PM use 0 21 * * *, and for both use 0 9,21 * * *. The time is in the scheduler’s time zone, not necessarily yours.

Why does * 9 * * * run 60 times?

The first field is the minute. A star there matches every minute of the 9 o’clock hour, from 09:00 to 09:59. Use 0 9 * * * for a single run.

Does cron run a daily job that was missed while the computer was off?

No. cron only runs jobs whose time matches while it is running. anacron, or a systemd timer with Persistent=true, runs a missed daily job when the machine is next on.

How do I run a daily job only on weekdays?

Set the day-of-week field: 0 9 * * 1-5 runs at 09:00 Monday to Friday. Leave day of month as *; if both day fields are restricted, standard cron runs when either one matches. Read about that rule.

REFSources

Platform syntax follows the official documentation linked below. Vendors update their docs, so follow the links for the current wording.

  1. crontab(5) on man7.org: steps, % in commands, CRON_TZ, the day-of-month OR day-of-week rule and daylight saving
  2. GitHub Actions: schedule event: 5-minute minimum, delays and dropped runs under load, UTC default and timezone, no @daily
  3. Kubernetes CronJob: schedule, timeZone and concurrencyPolicy
  4. systemd.time(7) calendar events and systemd.timer(5) Persistent=
  5. anacron(8)