Cron expression for every day at noon
Runs once a day at 12:00.
0 12 * * *Next 5 runs (your time zone: )
Field by field
| Field | Value | Meaning |
|---|---|---|
| Minute | 0 | at minute 0 |
| Hour | 12 | at hour 12 |
| 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
0 12 * * * /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: "0 12 * * *"
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/workflows/scheduled.yml
on:
schedule:
- cron: '0 12 * * *'
systemd timer
systemd timers use OnCalendar instead of cron syntax. Check the value with systemd-analyze calendar '12:00', or generate the full service and timer.
Timer section
[Timer] OnCalendar=12:00 Persistent=true