Cron expression for every minute
Runs once a minute, at the start of every minute.
* * * * *Next 5 runs (your time zone: )
Field by field
| Field | Value | Meaning |
|---|---|---|
| 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