Kitloft

All tools / Cron schedules

Cron expression for every Friday at 5 PM

Runs once a week, at 17:00 on Friday.

Cron expression for every Friday at 5 PM
0 17 * * 5

Next 5 runs (your time zone: )

Field by field

FieldValueMeaning
Minute0at minute 0
Hour17at hour 17
Day of month*every day of the month
Month*every month
Day of week5on Friday

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 17 * * 5 /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 17 * * 5"
  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 17 * * 5'

systemd timer

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

Timer section
[Timer]
OnCalendar=Fri 17:00
Persistent=true

Open this schedule in the cron explainer →