Ekspresi Cron Dijelaskan: 15 Contoh Jadwal Nyata dan Jebakan Zona Waktu
Sintaks cron muat dalam satu baris, tapi cepat atau lambat semua orang pasti kebingungan, biasanya jam 2 pagi di malam pergantian waktu musim panas. Berikut cara kerja kelima field-nya, sejumlah jadwal yang bisa langsung kamu salin, dan jebakan yang perlu kamu ketahui.
Lima field
┌──────── minute (0–59)
│ ┌────── hour (0–23)
│ │ ┌──── day of month (1–31)
│ │ │ ┌── month (1–12)
│ │ │ │ ┌ day of week (0–6, Sunday = 0)
* * * * *
Setiap field menerima satu nilai (5), daftar (1,15), rentang (1-5), langkah (*/10), atau * untuk setiap nilai. Beberapa sistem (Quartz, AWS EventBridge) menambahkan field detik atau tahun, jadi cek dulu versi yang kamu pakai.
Jadwal siap salin
| Expression | Runs |
|---|---|
*/5 * * * * | Setiap 5 menit |
0 * * * * | Setiap jam, tepat di awal jam |
15 */2 * * * | Setiap 2 jam, pada menit ke-15 |
0 9 * * * | Setiap hari pukul 09:00 |
30 2 * * * | Setiap hari pukul 02:30 (lihat jebakan DST di bawah) |
0 9 * * 1-5 | Hari kerja pukul 09:00 |
0 18 * * 5 | Setiap Jumat pukul 18:00 |
0 0 * * 0 | Setiap Minggu tengah malam |
0 0 1 * * | Tanggal 1 setiap bulan |
0 0 1 1 * | Setahun sekali, 1 Januari |
0 8 1,15 * * | Tanggal 1 dan 15 pukul 08:00 |
*/15 9-17 * * 1-5 | Setiap 15 menit selama jam kerja |
0 0 * * 6,0 | Tengah malam setiap akhir pekan |
0 3 * 1,4,7,10 * | Setiap hari pukul 03:00 di bulan pertama setiap kuartal |
0 12 * * * | Setiap hari pukul 12:00 |
Buat atau terjemahkan ekspresi apa pun ke dalam bahasa sehari-hari dengan Cron Expression Generator, yang juga menampilkan waktu eksekusi berikutnya.
Jebakan hari-dalam-bulan vs hari-dalam-minggu
Ketika field hari-dalam-bulan dan hari-dalam-minggu sama-sama dibatasi, cron standar berjalan jika salah satu cocok, bukan keduanya. 0 9 13 * 5 berjalan setiap tanggal 13 di setiap bulan dan setiap Jumat, bukan hanya pada Jumat tanggal 13. Untuk berjalan di hari kerja terakhir atau Senin pertama, jadwalkan secara harian lalu cek tanggalnya di skrip kamu, atau gunakan scheduler dengan ekstensi seperti L dan #.
Zona waktu dan waktu musim panas (daylight saving time)
- Server dan CI berjalan dalam UTC. Jadwal GitHub Actions, sebagian besar container, dan cloud scheduler memakai UTC. Pukul 09:00 di New York adalah
0 14 * * *saat musim dingin dan0 13 * * *saat musim panas. Konversikan dengan Time Zone Converter, atau lihat beberapa zona sekaligus di World Clock. - Job antara pukul 01:00 dan 03:00 waktu lokal itu berisiko. Saat jam maju, 02:30 tidak ada dan job bisa terlewat; saat jam mundur, job bisa berjalan dua kali. Jadwalkan job penting di luar rentang waktu itu, atau jalankan scheduler dalam UTC.
- Jadwal GitHub Actions bisa mulai terlambat beberapa menit saat server sedang sibuk, dan akan dinonaktifkan pada repositori yang tidak ada aktivitas selama 60 hari. Buat workflow dengan GitHub Actions Generator.