DevToolPal
ID

Ekspresi cron

Senin pertama setiap bulan

Tugas berjalan pukul 09:00 pada tanggal 1–7, dan uji shell hanya mempertahankan hari Senin.

0 9 1-7 * * Buka di Pengurai Ekspresi Cron

Menulis 0 9 1-7 * 1 tidak berhasil: jika kedua kolom hari diisi, cron berjalan bila salah satunya cocok, sehingga berjalan pada tanggal 1–7 dan setiap Senin. Quartz dan Spring mendukung MON#1.

Per kolom

Kolom Nilai Cocok dengan
Menit 0 0
Jam 9 9
Tanggal 1-7 1, 2, 3, 4, 5, 6, 7
Bulan * Semua nilai
Hari * Semua nilai

Waktu eksekusi berikutnya

Contoh: 6 eksekusi pertama setelah 1 Januari 2026 (UTC).

  1. Sen, 5 Jan 2026, 09.00
  2. Sen, 2 Feb 2026, 09.00
  3. Sen, 2 Mar 2026, 09.00
  4. Sen, 6 Apr 2026, 09.00
  5. Sen, 4 Mei 2026, 09.00
  6. Sen, 1 Jun 2026, 09.00

Versi siap pakai

crontab
0 9 1-7 * * [ "$(date +\%u)" = 1 ] && /path/to/command

Tambahkan baris ini dengan crontab -e. Baris berjalan di zona waktu server kecuali CRON_TZ atau TZ diatur.

Kubernetes CronJob
apiVersion: batch/v1
kind: CronJob
metadata:
  name: first-monday-of-month
spec:
  schedule: "0 9 1-7 * *"
  timeZone: "Etc/UTC"
  concurrencyPolicy: Forbid
  jobTemplate:
    spec:
      template:
        spec:
          restartPolicy: OnFailure
          containers:
            - name: job
              image: busybox:1.36
              command: ["/bin/sh", "-c", "date; echo run"]

Atur spec.timeZone (Kubernetes 1.27+); tanpanya jadwal mengikuti zona waktu controller manager, biasanya UTC.

GitHub Actions
on:
  schedule:
    - cron: '0 9 1-7 * *'
  workflow_dispatch:

GitHub Actions selalu memakai UTC, hanya menerima interval minimal 5 menit, dan bisa terlambat memulai saat beban tinggi.

Quartz
0 0 9 ? * MON#1

Quartz menaruh detik di depan dan butuh ? di tanggal atau hari. Hari bernomor 1–7 mulai Minggu, jadi memakai nama lebih aman.

Spring
@Scheduled(cron = "0 0 9 * * MON#1")

Spring @Scheduled(cron = …) memakai enam kolom: detik, lalu lima kolom biasa.

FAQ

› Mengapa 0 9 1-7 * 1 berjalan terlalu sering?

Cron menggabungkan tanggal dan hari dengan ATAU bila keduanya dibatasi, jadi tugas berjalan pada tanggal 1 sampai 7 dan juga setiap Senin.

› Di zona waktu mana 0 9 1-7 * * berjalan?

Cron memakai zona waktu mesin atau layanan yang menjalankannya. Di Linux itu zona waktu sistem kecuali CRON_TZ atau TZ diatur; CronJob Kubernetes mendukung spec.timeZone; GitHub Actions selalu memakai UTC.

› Bagaimana memeriksa jadwal ini sebelum deploy?

Buka 0 9 1-7 * * di Pengurai Ekspresi Cron di situs ini. Alat itu menjelaskan setiap kolom dan menampilkan eksekusi berikutnya dalam waktu lokal atau UTC, langsung di browser.