Skip to content
Cron Expression Generator

Cron expression for every 45 minutes

The cron expression to run a job every 45 minutes is:

*/45 * * * *

At minutes 0 and 45 past the hour.

Despite how it looks, */45 does not run every 45 minutes. A step counts from the start of its field and restarts every hour, so it matches only minutes 0 and 45: the job runs at :00 and :45, with gaps of 45 and then 15 minutes. Only steps that divide 60 evenly (1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30) give a constant interval. A true 45-minute cycle repeats every three hours (00:00, 00:45, 01:30, 02:15, 03:00), so in crontab it takes three lines — see the crontab example below.

Test and customize this schedule

Format
Valid

5 fields (minute hour day month weekday), or 6 with seconds first. Names like MON-FRI, macros like @daily and full crontab lines work. Press / to focus.

English

At minutes 0 and 45 past the hour.

العربية

عند الدقائق 0 و45 من كل ساعة.

    Quick presets

    Visual cron generator

    Pick options for each field — the expression above updates instantly.

    Next 5 executions

    Local time:

      Cheat sheet

      *
      Any value
      ,
      List — 1,15,30
      -
      Range — 1-5
      /
      Step — */10
      ?
      No specific value (day fields)
      @daily
      Macro for 0 0 * * *

      Field-by-field breakdown

      FieldValueMeaning
      Minute*/450 and 45
      Hour*Every hour
      Day of month*Every day of the month
      Month*Every month
      Day of week*Every day of the week

      Copy-paste examples

      Linux crontab

      # crontab -e
      # */45 only matches :00 and :45 — these three lines give a true 45-minute cycle
      0,45 */3 * * * /usr/local/bin/my-job.sh >> /var/log/my-job.log 2>&1
      30 1-22/3 * * * /usr/local/bin/my-job.sh >> /var/log/my-job.log 2>&1
      15 2-23/3 * * * /usr/local/bin/my-job.sh >> /var/log/my-job.log 2>&1

      Kubernetes CronJob

      apiVersion: batch/v1
      kind: CronJob
      metadata:
        name: my-job
      spec:
        schedule: "*/45 * * * *"
        concurrencyPolicy: Forbid
        jobTemplate:
          spec:
            template:
              spec:
                restartPolicy: OnFailure
                containers:
                  - name: my-job
                    image: busybox:1.36
                    command: ["sh", "-c", "date; echo Hello from cron"]

      GitHub Actions

      on:
        schedule:
          - cron: '*/45 * * * *'   # always UTC

      GitHub Actions evaluates schedules in UTC, does not accept macros such as @daily, and will not run workflows more often than every 5 minutes; runs can also be delayed during periods of high load.

      Common variations

      Click an expression to load it into the tool above.

      Cron expressionSchedule
      At minutes 0 and 45 past the hour, every 3 hours.
      At 30 minutes past the hour, every 3 hours, between 1:00 AM and 10:59 PM.
      At 15 minutes past the hour, every 3 hours, between 2:00 AM and 11:59 PM.
      At 45 minutes past the hour.

      Frequently asked questions

      What does */45 * * * * mean in cron?

      At minutes 0 and 45 past the hour. The five fields are minute */45, hour *, day of month *, month * and day of week *.

      How do I run a cron job every 45 minutes in Linux?

      Run crontab -e, add the lines from the Linux crontab example on this page, then save and exit. Use absolute paths, redirect output to a log file, and confirm it runs with grep CRON /var/log/syslog.

      When will */45 * * * * run next?

      It depends on the current time and the time zone of the machine running cron. The calculator on this page shows the next 5 run times in your local time zone; on a server, cron uses the system time zone, which is often UTC.

      How do I run a cron job exactly every 45 minutes?

      Use three crontab lines that together repeat every three hours: 0,45 */3 * * * /path/to/job, 30 1-22/3 * * * /path/to/job and 15 2-23/3 * * * /path/to/job. That gives 32 evenly spaced runs a day. Alternatively, use a systemd timer with OnUnitActiveSec=45min, which measures the interval from the last run instead of from the clock.

      Related cron schedules

      Browse all cron expression examples →