Kitloft

All tools / Cron schedules

Cron expression for every minute

Runs once a minute, at the start of every minute.

Cron expression for every minute
* * * * *

Next 5 runs (your time zone: )

Field by field

FieldValueMeaning
Minute*every minute
Hour*every hour
Day of month*every day of the month
Month*every month
Day of week*any day of the week

Use it in your scheduler

crontab

Run crontab -e and add a line. Cron uses the server's time zone, which is often UTC.

crontab line
* * * * * /usr/local/bin/my-job.sh >> /var/log/my-job.log 2>&1

Kubernetes CronJob

Set timeZone to run the schedule in a zone other than the cluster's default.

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

GitHub Actions

GitHub evaluates schedules in UTC and runs them on the default branch. Runs can start a few minutes late when GitHub is busy. GitHub runs scheduled workflows at most once every 5 minutes, so this schedule will run less often than written there.

.github/workflows/scheduled.yml
on:
  schedule:
    - cron: '* * * * *'

systemd timer

systemd timers use OnCalendar instead of cron syntax. Check the value with systemd-analyze calendar '*-*-* *:*:00', or generate the full service and timer.

Timer section
[Timer]
OnCalendar=*-*-* *:*:00
Persistent=true

Open this schedule in the cron explainer →