CodeKitHub
Alat Kode

Generator Ekspresi Cron

Terakhir diperbarui:

Ekspresi cron adalah string lima field (menit, jam, tanggal, bulan, hari dalam seminggu) yang memberi tahu penjadwal seperti Unix cron, crontab, atau pipeline CI/CD kapan tepatnya sebuah tugas harus dijalankan — misalnya `*/15 9-17 * * MON-FRI` berarti "setiap 15 menit, antara jam 9 pagi dan 5 sore, Senin sampai Jumat." Alat ini bekerja dua arah: susun jadwal menggunakan dropdown sederhana dan dapatkan string cron-nya, atau tempelkan ekspresi cron yang sudah ada dan langsung lihat terjemahan dalam bahasa sederhana plus 5 waktu eksekusi berikutnya yang sebenarnya. Alat ini mengikuti sintaks cron POSIX/Vixie standar 5-field yang digunakan oleh Unix, crontab Linux, dan sebagian besar penjadwal tugas — lihat halaman manual crontab(5) untuk spesifikasi bakunya. Semuanya berjalan secara lokal di browser Anda; tidak ada yang Anda ketik yang diunggah ke mana pun.

Deskripsi
5 Waktu Berikutnya
    Pembuat
    Menit
    Jam
    Tanggal
    Bulan
    Hari
    Legenda sintaks
    • * — any value
    • , — value list separator (e.g. 1,3,5)
    • - — range of values (e.g. 1-5)
    • / — step values (e.g. */15 = every 15)

    Apa Itu Alat Ini?

    Ekspresi cron adalah string jadwal ringkas lima field — `menit jam tanggal bulan hari-dalam-seminggu` — yang digunakan oleh daemon `cron` Unix dan hampir semua penjadwal tugas yang meniru modelnya (crontab, CronJob Kubernetes, `schedule:` GitHub Actions, Airflow, Jenkins). Setiap field menerima tanda bintang (`*`, berarti "nilai apa saja"), angka tertentu, daftar yang dipisahkan koma (`1,15,30`), rentang (`9-17`), langkah (`*/15`, berarti "setiap 15 unit"), atau — untuk bulan dan hari dalam seminggu — nama tiga huruf (`JAN`, `MON`) alih-alih angka.

    Definisi baku dari sintaks ini adalah halaman manual crontab(5) Linux, yang mendokumentasikan lima field yang sama persis, karakter khusus (`* , - /`), dan delapan string singkatan `@` (`@reboot`, `@yearly`/`@annually`, `@monthly`, `@weekly`, `@daily`/`@midnight`, `@hourly`) yang didukung oleh sebagian besar implementasi cron, termasuk Vixie cron (versi yang disertakan pada sebagian besar distribusi Linux), sebagai alias untuk jadwal umum.

    Alat ini mengimplementasikan persis format standar 5-field tersebut — format yang akan Anda masukkan langsung ke `crontab -e` pada server Linux atau macOS, atau ke field `schedule:` pada CronJob Kubernetes. Alat ini tidak mengimplementasikan sintaks cron Quartz, format berbeda dengan 6 atau 7 field yang digunakan oleh Quartz Scheduler milik Java dan beberapa alat vendor lain (lihat bagian perbandingan di bawah untuk mengetahui kapan Anda memerlukan itu sebagai gantinya).

    Mengapa Menggunakannya?

    • Kamu baru gabung di tim dan disuruh maintain cronjob backup database peninggalan developer sebelumnya yang cuma berupa `0 2 */3 * *` tanpa komentar apa pun — tempel string itu di sini untuk langsung dapat penjelasan bahasa manusia sebelum berani menyentuhnya.
    • Kamu mau bikin GitHub Actions workflow yang jalan tiap jam kerja Senin-Jumat buat auto-deploy staging, tapi selalu lupa urutan field cron mana yang menit dan mana yang jam — susun pakai dropdown builder di sini biar tidak perlu buka dokumentasi crontab lagi.
    • Cronjob production kamu tiba-tiba jalan dua kali di hari yang sama dan kamu curiga ada masalah di kombinasi field tanggal dan hari — cek 5 waktu eksekusi berikutnya di sini untuk konfirmasi apakah ini jebakan semantik OR yang terkenal antara dom dan dow.
    • Klien minta laporan mingguan dikirim otomatis "setiap Senin jam 8 pagi" dan kamu perlu langsung dapat ekspresi cron yang valid tanpa typo off-by-one di posisi field — masukkan kebutuhan itu lewat builder dan salin hasilnya langsung ke crontab server.
    • Kamu setup CronJob di Kubernetes buat cleanup job tiap 15 menit tapi ragu apakah `*/15` di field jam berarti "tiap 15 jam" atau salah tempat — verifikasi dulu susunan field-nya di sini sebelum apply ke cluster produksi.
    • Kamu debug kenapa job Airflow tidak jalan sesuai jadwal yang diharapkan, dan curiga masalahnya ada di format cron Quartz vs cron standar 5-field — cek tabel perbandingan di sini untuk pastikan tool yang kamu pakai memang cocok dengan jenis scheduler-nya.

    Cara Menggunakan

    1. Untuk menerjemahkan sebuah ekspresi: ketik atau tempelkan string cron 5-field (atau singkatan @ seperti `@daily`) ke dalam kolom input.
    2. Baca deskripsi dalam bahasa sederhana dan 5 waktu eksekusi berikutnya yang dihitung di bawahnya — keduanya diperbarui secara langsung saat Anda mengetik.
    3. Untuk menyusun sebuah ekspresi sebagai gantinya: buka bagian Builder, pilih mode (setiap / setiap N / nilai tertentu) untuk masing-masing dari lima field, lalu klik "Buat ekspresi."
    4. Ekspresi yang dihasilkan akan mengisi kolom input di atas dan langsung memperbarui panel deskripsi serta waktu eksekusi berikutnya.
    5. Gunakan legenda sintaks di bagian bawah sebagai referensi cepat untuk `*`, `,`, `-`, dan `/`.
    6. Salin ekspresi akhir dengan tombol Copy dan tempelkan ke crontab, konfigurasi CI, atau penjadwal Anda.

    Contoh

    Input

    */15 9-17 * * MON-FRI

    Output

    Pada 09:00, 09:15, 09:30, 09:45, 10:00 ... 17:45, hari Senin, Selasa, Rabu, Kamis, Jumat

    Ekspresi ini berjalan setiap 15 menit, tetapi hanya dalam rentang jam 09:00–17:59, dan hanya pada hari kerja — jadwal polling "jam kerja" yang khas.

    Cron standar vs cron Quartz

    "Sintaks cron" bukanlah satu standar universal tunggal — dua format yang paling sering Anda temui berbeda dalam jumlah field dan makna beberapa karakter khusus. Gunakan tabel ini untuk memastikan Anda menggunakan format yang tepat untuk penjadwal tujuan Anda.

    AspekCron standar (alat ini)Cron Quartz
    Jumlah field5 (menit jam dom bulan dow)6 atau 7 (menambahkan detik, dan tahun opsional)
    Digunakan olehcrontab Linux/macOS, CronJob Kubernetes, GitHub ActionsJava Quartz Scheduler, beberapa penjadwal enterprise
    Tanggal + hari-dalam-seminggu sama-sama disetCocok dengan SALAH SATU (gabungan/OR)Membutuhkan `?` pada salah satu dari dua field — tidak bisa mengeset keduanya dengan nilai secara bersamaan
    Karakter khusus tambahanTidak ada selain `* , - /`Menambahkan `?`, `L` (terakhir), `W` (hari kerja terdekat), `#` (hari-ke-n dalam seminggu pada bulan)
    Penjadwalan tingkat detikTidak didukungDidukung (field pertama)

    Alat terkait

    Sedang bekerja dengan konfigurasi, jadwal, atau timestamp? Alat-alat ini cocok dipadukan dengan generator cron.

    Konverter Timestamp · Konverter Jam Dunia · Kalkulator Tanggal

    Kesalahan cron yang paling sering menjebak developer

    • Mengira field tanggal dan hari-dalam-minggu bekerja sebagai AND ketika keduanya diisi — padahal cron POSIX standar memakai logika OR, sumber bug klasik yang bikin job jalan lebih sering dari yang diharapkan.
    • Lupa bahwa hari Minggu bisa direpresentasikan sebagai 0 maupun 7 tergantung implementasi, yang bisa bikin bingung saat membaca cronjob lama dari developer lain.
    • Menganggap ekspresi cron sudah otomatis menyesuaikan zona waktu server — padahal cron menjalankan jadwal berdasarkan jam sistem lokal server tersebut, bukan zona waktu tempat kamu menulis kodenya.
    • Mencampur sintaks cron Quartz (yang punya field detik dan karakter `?`/`L`/`W`) dengan cron standar 5-field saat menyalin contoh dari Stack Overflow tanpa mengecek dulu scheduler mana yang sebenarnya dipakai proyekmu.

    Pertanyaan yang Sering Diajukan

    Apa itu ekspresi cron?

    Ekspresi cron adalah string teks 5-field (`menit jam tanggal bulan hari-dalam-seminggu`) yang menentukan jadwal berulang untuk daemon `cron` Unix dan penjadwal yang kompatibel. Setiap field bisa berupa `*` (nilai apa saja), angka, daftar yang dipisahkan koma, rentang (`a-b`), atau langkah (`*/n`); field bulan dan hari dalam seminggu juga menerima nama tiga huruf seperti `JAN` atau `MON`. Spesifikasi lengkapnya didokumentasikan di halaman manual crontab(5).

    Apa yang terjadi ketika tanggal dan hari-dalam-seminggu sama-sama dibatasi?

    Ini adalah jebakan cron yang terkenal: berdasarkan semantik cron POSIX, ketika KEDUA field tanggal dan hari-dalam-seminggu dibatasi (bukan `*`), sebuah tugas akan berjalan jika SALAH SATU kondisi terpenuhi — ini adalah gabungan (OR), bukan irisan (AND). Misalnya, `0 4 8 * MON` berjalan pukul 4 pagi baik pada tanggal 8 setiap bulan MAUPUN setiap hari Senin, bukan hanya hari Senin yang kebetulan jatuh pada tanggal 8. Alat ini mengimplementasikan persis perilaku gabungan tersebut saat menghitung waktu eksekusi berikutnya.

    Cron standar vs cron Quartz — mana yang saya butuhkan?

    Alat ini menghasilkan sintaks cron POSIX/Vixie standar 5-field — format yang digunakan oleh `crontab` Linux/macOS, CronJob Kubernetes, `schedule:` GitHub Actions, dan sebagian besar penjalan tugas berbasis Unix. Cron Quartz, yang digunakan oleh Quartz Scheduler milik Java dan alat-alat yang dibangun di atasnya (beberapa penjadwal enterprise, konfigurasi Spring Batch lama), adalah format berbeda dengan 6 atau 7 field yang menambahkan field detik di depan dan mengubah makna beberapa karakter khusus (`?` untuk "tidak ada nilai tertentu" pada field hari, `L`/`W`/`#` untuk "hari terakhir," "hari kerja terdekat," dan "hari-ke-n dalam seminggu pada bulan tersebut"). Jika jumlah field pada penjadwal Anda adalah 6 atau 7, atau dokumentasi Anda menyebutkan `?`, `L`, `W`, atau `#`, Anda memerlukan alat khusus Quartz — ekspresi dari generator ini tidak akan diuraikan dengan benar di sana. Jika tepat 5 field (atau singkatan seperti `@daily`), Anda berada di tempat yang tepat.

    Apa arti singkatan @yearly, @monthly, @weekly, @daily, dan @hourly?

    Ini adalah string singkatan yang tidak standar tetapi didukung secara luas, yang diperluas menjadi ekspresi 5-field umum: `@yearly`/`@annually` = `0 0 1 1 *` (sekali setahun, 1 Januari tengah malam), `@monthly` = `0 0 1 * *` (tanggal 1 setiap bulan tengah malam), `@weekly` = `0 0 * * 0` (setiap hari Minggu tengah malam), `@daily`/`@midnight` = `0 0 * * *` (setiap hari tengah malam), `@hourly` = `0 * * * *` (setiap awal jam). Alat ini menguraikan semuanya dan memperlakukannya persis seperti padanan 5-field yang telah diperluas.

    Bisakah saya menggunakan nama hari/bulan alih-alih angka?

    Bisa. Field bulan menerima nama tiga huruf `JAN` hingga `DEC`, dan field hari-dalam-seminggu menerima `SUN` hingga `SAT` (tidak peka huruf besar/kecil), dapat dipertukarkan dengan angka. Angka hari-dalam-seminggu berjalan dari 0–6 dengan 0 = Minggu; beberapa implementasi juga menerima 7 untuk Minggu, yang dinormalisasi oleh alat ini menjadi 0. Rentang dan daftar juga bekerja dengan nama, misalnya `MON-FRI` atau `JAN,JUN,DEC`.

    Apakah ekspresi cron saya dikirim ke server?

    Tidak. Penguraian, deskripsi dalam bahasa sederhana, dan perhitungan waktu eksekusi berikutnya semuanya terjadi secara lokal dalam JavaScript di browser Anda. Tidak ada yang Anda ketik atau hasilkan yang pernah meninggalkan perangkat Anda.

    Apakah alat ini memperhitungkan zona waktu server saya?

    Tidak secara otomatis — cron pada dasarnya tidak menyimpan informasi zona waktu di dalam ekspresinya sendiri; waktu eksekusi bergantung pada zona waktu sistem tempat daemon cron itu berjalan. Alat ini menghitung 5 waktu eksekusi berikutnya berdasarkan waktu di perangkatmu saat ini, jadi kalau server produksimu memakai zona waktu UTC sementara kamu di WIB, sesuaikan dulu selisih jamnya sebelum menyimpulkan jadwal aktualnya.

    Kenapa cronjob saya jalan di tanggal yang tidak saya duga padahal field tanggal dan hari sudah saya isi dengan benar?

    Kemungkinan besar kamu terkena jebakan semantik OR antara field tanggal-dalam-bulan dan hari-dalam-minggu — kalau keduanya diisi nilai spesifik (bukan `*`), cron menjalankan tugas kalau SALAH SATU kondisi terpenuhi, bukan kalau KEDUANYA terpenuhi. Cek bagian FAQ soal interaksi tanggal/hari di atas dan verifikasi 5 waktu eksekusi berikutnya di sini untuk konfirmasi perilaku sebenarnya.

    Bisakah saya memakai alat ini untuk menyusun jadwal GitHub Actions atau GitLab CI?

    Bisa — field `schedule:` di GitHub Actions dan GitLab CI keduanya memakai sintaks cron POSIX/Vixie standar 5-field yang sama persis dengan yang diimplementasikan alat ini, jadi ekspresi yang kamu susun di sini bisa langsung ditempel ke file YAML workflow tanpa modifikasi.

    Apa yang terjadi kalau saya salah masukkan angka di luar rentang valid, misalnya menit 60 atau bulan 13?

    Cron sungguhan akan menolak atau berperilaku tidak terduga pada nilai di luar rentang seperti itu, tergantung implementasinya — alat ini membantu mencegah kesalahan semacam ini sejak awal karena builder dropdown hanya menampilkan pilihan nilai yang valid untuk tiap field, jadi kamu tidak akan pernah menghasilkan ekspresi dengan angka di luar batas.

    Alat Terkait