Cronwise

Dasar-Dasar Ekspresi Cron: Memahami 5 Field

Uraian sintaks cron standar dalam bahasa sederhana yang dapat Anda terapkan segera

Coba Cron Explainer

Mengapa Ekspresi Cron Membingungkan Bahkan Developer Berpengalaman

Sebagian besar kesalahan cron dimulai sebelum deployment, ketika tujuan jadwal dan sintaks berbeda. Anda ingin pekerjaan berjalan setiap hari kerja pukul 8 pagi, tetapi satu nilai yang salah tempat menggesernya ke setiap jam atau setiap hari dalam bulan. Penyebab utamanya hampir selalu sama: lima field dari ekspresi cron itu ringkas, berbasis posisi, dan tidak memaafkan kesalahan.

Ekspresi cron standar adalah satu baris dari lima field yang dipisahkan spasi. Setiap field memetakan ke unit waktu, dan bersama-sama mereka mendefinisikan jadwal berulang. Tidak ada label, tidak ada kata kunci secara default, dan tidak ada ruang untuk ambiguitas begitu scheduler membaca baris tersebut.

Artikel ini menjelaskan struktur format cron 5-field dalam bahasa sederhana. Anda akan mempelajari apa yang dikontrol setiap field, bagaimana token umum bekerja, dan di mana kesalahan baca yang umum terjadi. Setiap contoh dapat diverifikasi secara instan di Cronwise Cron Explainer, yang memberikan Anda uraian dalam bahasa sederhana dan pratinjau waktu eksekusi berikutnya yang sadar zona waktu untuk ekspresi apa pun yang Anda masukkan.

Baik Anda menulis entri crontab pertama Anda atau meninjau jadwal yang ditulis orang lain, memahami kelima field ini adalah fondasi untuk setiap alur kerja cron selanjutnya.

Lima Field: Apa yang Dikontrol Masing-Masing

Setiap ekspresi cron standar mengikuti format posisi yang sama. Dari kiri ke kanan, kelima field tersebut adalah:

PosisiFieldNilai yang DiizinkanDeskripsi
1Menit0 – 59Menit dalam jam saat pekerjaan berjalan
2Jam0 – 23Jam dalam sehari (format 24 jam)
3Hari dalam Bulan1 – 31Tanggal kalender
4Bulan1 – 12Bulan dalam setahun
5Hari dalam Minggu0 – 7Hari kerja (0 dan 7 keduanya mewakili Minggu)

Contoh konkret membuat pemetaan menjadi jelas. Ekspresi 30 8 * * 1-5 berarti: pada menit 30, jam 8, pada setiap hari dalam bulan, di setiap bulan, tetapi hanya pada hari kerja Senin sampai Jumat. Dalam bahasa sederhana: 8:30 pagi, Senin sampai Jumat.

Tanda bintang (*) adalah wildcard yang mencocokkan setiap nilai yang diizinkan untuk field tersebut. Saat Anda melihatnya, baca sebagai "setiap." Jadi * * * * * berarti setiap menit dari setiap jam dari setiap hari — jadwal paling sering yang mungkin dalam cron standar.

Token Umum dan Cara Kerjanya

Selain wildcard tanda bintang, field cron mendukung beberapa token yang memungkinkan Anda mengekspresikan rentang, interval, dan daftar tanpa menulis entri terpisah.

Koma (Daftar)

Koma memisahkan nilai individual. 0 9,12,18 * * * berjalan pada pukul 9:00 pagi, 12:00 siang, dan 6:00 sore setiap hari. Setiap nilai dalam daftar diperlakukan secara independen.

Tanda Hubung (Rentang)

Tanda hubung mendefinisikan rentang berkelanjutan. 0 9-17 * * * berjalan di awal setiap jam dari pukul 9:00 pagi sampai 5:00 sore. Rentang bersifat inklusif di kedua ujungnya.

Garis Miring (Langkah)

Garis miring mendefinisikan interval. */15 * * * * berjalan setiap 15 menit, dimulai dari menit 0. Anda dapat menggabungkan rentang dengan langkah: 0-30/10 * * * * berjalan pada menit 0, 10, 20, dan 30 setiap jam.

Menggabungkan Token

Token dapat dicampur dalam satu field. 0 8-12,18 * * 1-5 berjalan di awal jam 8 sampai 12 dan juga di jam 18, tetapi hanya pada hari kerja. Setiap field dievaluasi secara independen, dan scheduler berjalan ketika kelima field cocok secara bersamaan.

Untuk panduan lebih mendalam tentang strategi membaca, lihat Cara Membaca Ekspresi Cron dengan Cepat, yang mencakup model mental untuk mem-parsing ekspresi secara sekilas.

Cara Menginterpretasikan Jadwal Nyata

Membaca ekspresi cron dengan benar berarti menerjemahkan setiap field secara berurutan lalu menggabungkannya menjadi satu kalimat. Berikut contoh praktis dengan padanan bahasa sederhana mereka:

EkspresiArtiKapan DigunakanCatatan Risiko
0 0 * * *Tengah malam setiap hariPekerjaan batch harian, rotasi logBeban berat jika banyak pekerjaan berbagi slot ini
*/5 * * * *Setiap 5 menitHealth check, polling antrianFrekuensi tinggi; pastikan pekerjaan bersifat idempoten
0 9 1 * *9:00 pagi pada tanggal 1 setiap bulanLaporan bulananBulan dengan kurang dari 31 hari berperilaku normal
30 2 * * 02:30 pagi setiap MingguJendela pemeliharaan mingguanMungkin tumpang tindih dengan transisi DST di musim semi
0 */2 * * 1-5Setiap 2 jam pada hari kerjaPolling jam kerjaBerjalan pada 0, 2, 4 … 22 — bukan hanya jam kerja

Contoh terakhir adalah salah interpretasi yang umum. */2 di field jam berarti setiap jam kedua dari 0, bukan setiap dua jam selama jam kerja. Jika Anda hanya ingin 9 pagi sampai 5 sore, Anda perlu 0 9-17/2 * * 1-5 sebagai gantinya. Ini persis jenis kesalahan halus yang ditangkap oleh Cronwise Explainer dengan menunjukkan 10 waktu eksekusi terjadwal berikutnya di zona waktu Anda.

Kasus Khusus dan Batas Field

Format 5-field memiliki batasan yang mudah dilupakan. Memahaminya mencegah kegagalan diam-diam.

Interaksi Hari-dalam-Bulan vs. Hari-dalam-Minggu

Dalam cron standar, ketika hari-dalam-bulan (field 3) dan hari-dalam-minggu (field 5) keduanya diatur ke nilai non-wildcard, sebagian besar implementasi memperlakukannya sebagai union: pekerjaan berjalan jika salah satu kondisi benar. Ini berarti 0 9 15 * 1 tidak berarti "tanggal 15 jika itu hari Senin." Artinya "setiap tanggal 15 dalam bulan dan setiap hari Senin." Ini adalah salah satu kejutan yang paling sering dilaporkan dalam cron.

Batas Bulan dan Hari Kerja

Mengatur hari-dalam-bulan ke 31 berarti pekerjaan hanya akan berjalan di bulan yang memiliki 31 hari (Januari, Maret, Mei, Juli, Agustus, Oktober, Desember). Pekerjaan akan diam-diam melewatkan bulan yang lebih pendek. Demikian pula, nilai hari-dalam-minggu 0 dan 7 keduanya mewakili Minggu, tetapi mencampurnya dalam ekspresi yang sama dapat menyebabkan kebingungan saat review kode.

Ketergantungan Zona Waktu

Ekspresi cron tidak mengandung informasi zona waktu dengan sendirinya. Scheduler menginterpretasikan waktu dalam zona waktu apa pun yang dikonfigurasi untuk digunakan, yang mungkin UTC, waktu lokal server, atau override eksplisit. Jika tim Anda tersebar di beberapa zona waktu, selalu konfirmasi pengaturan zona waktu scheduler sebelum deployment. Cronwise memungkinkan Anda memilih zona waktu IANA mana pun dan melihat pratinjau eksekusi sesuai.

Terapkan Apa yang Anda Ketahui dalam Alur Kerja Cronwise

Setelah Anda memahami kelima field, langkah selanjutnya adalah beralih dari membaca ekspresi cron ke membuatnya dengan percaya diri. Cronwise menawarkan dua jalur komplementer untuk ini.

Jelaskan Dulu, Lalu Hasilkan

Mulai dengan Cron Explainer untuk memverifikasi ekspresi yang sudah ada. Tempelkan, baca ringkasan dalam bahasa sederhana, dan pindai tabel waktu eksekusi berikutnya. Jika jadwal bukan yang Anda maksud, beralih ke Cron Generator untuk membangun ekspresi yang benar secara visual, field demi field. Generator menghilangkan tebakan sintaks dengan membiarkan Anda memilih nilai dari dropdown dan tab.

Checklist Verifikasi Sebelum Deployment

PemeriksaanMengapa PentingKriteria Lulus
Ringkasan bahasa sederhana sesuai dengan tujuanMenangkap kesalahan urutan fieldKalimat ringkasan selaras dengan tujuan penjadwalan Anda
Timestamp waktu eksekusi berikutnya benarMenangkap penyalahgunaan token (rentang, langkah)5 eksekusi pertama sesuai tanggal dan waktu yang diharapkan
Zona waktu sesuai lingkungan targetMencegah eksekusi yang meleset beberapa jamZona waktu yang dipilih sama dengan zona waktu yang dikonfigurasi scheduler
Tidak ada peringatan validasiMenangkap pola berisiko sejak diniNol peringatan atau setiap peringatan diterima secara sengaja

Untuk panduan lengkap tentang builder visual, baca Generator Cron Visual: Alur Kerja Langkah Demi Langkah, yang mencakup navigasi tab, preset tersimpan, dan opsi ekspor.

Kesimpulan: Deploy dengan Percaya Diri

Format cron 5-field tampak sederhana: menit, jam, hari-dalam-bulan, bulan, dan hari-dalam-minggu. Menguasainya berarti mengetahui tidak hanya posisi field tetapi juga bagaimana token digabungkan, di mana kasus khusus bersembunyi, dan mengapa pemeriksaan validasi 10 detik sepadan dengan usahanya setiap kali.

Berikut aturan kunci untuk dibawa:

  • Baca field dari kiri ke kanan: menit, jam, hari, bulan, hari kerja.
  • Tanda bintang berarti "setiap" — ini bukan placeholder atau default.
  • Rentang, daftar, dan langkah dapat digabungkan, tetapi setiap field dievaluasi secara independen.
  • Hari-dalam-bulan dan hari-dalam-minggu membentuk union ketika keduanya non-wildcard — bukan intersection.
  • Selalu verifikasi zona waktu scheduler dan pratinjau waktu eksekusi berikutnya sebelum deployment.

Cronwise dibangun untuk membuat verifikasi ini cepat. Tempelkan ekspresi, baca penjelasan, periksa eksekusinya, dan deploy dengan percaya diri. Jelajahi semua artikel cron di Cronwise untuk terus belajar, atau langsung masuk ke alat.