Penjelas Ekspresi Cron
Tempel ekspresi cron dan dapatkan penjelasan dalam bahasa Inggris sederhana. Mendukung format cron standard 5-field dan 6-field (dengan detik).
Contoh (klik untuk mencoba)
0 0 * * *— setiap hari tengah malam*/5 * * * *— setiap 5 menit0 9 * * MON-FRI— pagi hari kerja jam 9 pagi0 0 1 * *— tanggal 1 setiap bulan tengah malam0 0 * * 0— setiap Minggu tengah malam15 2 * * *— setiap hari jam 2:15 pagi0 */6 * * *— setiap 6 jam30 3 1-7 * 1— Senin pertama setiap bulan jam 3:30 pagi
- Ketik atau tempel ekspresi cron ke input di atas.
- Baca penjelasan bahasa Inggris sederhana yang muncul di bawah.
- Klik chip contoh mana pun untuk menaruhnya di input dan melihatnya didekode.
- Perbaiki kesalahan parse yang ditampilkan merah dan ulangi sampai penjelasannya sesuai maksud Anda.
Apa fungsinya?
Penjelas mengambil ekspresi standard Unix cron (5 field) atau ekspresi gaya Quartz dengan detik (6 field) dan mengembalikan deskripsi manusiawi seperti "At 09:00 AM, Monday through Friday." Mendukung operator umum — *, ",", -, dan / — bersama dengan bulan bernama (JAN-DEC) dan hari bernama (SUN-SAT). Hasil diperbarui pada setiap ketikan sehingga Anda bisa iterasi ekspresi dengan cepat.
Contoh
Pekerjaan jam kerja yang umum:
0 9 * * MON-FRI Didekode:
At 09:00 AM, Monday through Friday Ekspresi Quartz 6-field yang lebih spesifik dengan detik:
0 30 2 ? * MON Didekode (setiap Senin pukul 02:30:00).
Format cron
┌───────── menit (0 - 59) │ ┌─────── jam (0 - 23) │ │ ┌───── hari dalam bulan (1 - 31) │ │ │ ┌─── bulan (1 - 12, atau JAN-DEC) │ │ │ │ ┌─ hari dalam minggu (0 - 6, atau SUN-SAT; 0 dan 7 keduanya berarti Minggu) │ │ │ │ │ * * * * *
Mengapa cron "0 0 * * *" terpicu pada tengah malam UTC bukan waktu lokal saya?
Sebagian besar bug cron nyata jatuh ke dalam beberapa jebakan berulang:
- Drift zona waktu. 0 0 * * * terpicu pada tengah malam di zona waktu penjadwal. Di Kubernetes CronJobs dan GitHub Actions itu default ke UTC — atur spec.timeZone atau konversi jam ke UTC sendiri.
- Ketidakcocokan 5-field vs 6-field. Menempel 0 0 9 * * MON-FRI (6 field) ke penjadwal 5-field membaca 0 awal sebagai menit dan 0 sebagai jam, jadi pekerjaan terpicu pada tengah malam, bukan 09:00.
- Hari dalam bulan dan hari dalam minggu bersama-sama. 0 0 15 * MON berjalan pada tanggal 15 dan setiap Senin — bukan hanya pada Senin yang jatuh di tanggal 15. Ini adalah semantik OR dari Vixie-cron.
- Step tidak restart saat deploy. */10 * * * * terpicu pada :00, :10, :20, :30, :40, :50 pada jam — bukan sepuluh menit setelah deploy terakhir Anda.
- Menggunakan ? di standard cron. Placeholder ? adalah ekstensi Quartz. Unix cron menolaknya — gunakan * sebagai gantinya.
- Hari dalam minggu 0 vs 7. Keduanya berarti Minggu di cron klasik, tetapi beberapa parser (BSD lama) hanya menerima 0. Jika portabilitas penting, gunakan SUN.
Operator
*— nilai apa pun,— daftar nilai (mis. MON,WED,FRI)-— rentang (mis. 1-5)/— nilai langkah (mis. */15 = setiap 15)
Pertanyaan yang sering diajukan
Apa perbedaan antara cron 5-field dan 6-field?
Standard POSIX cron memiliki 5 field: menit, jam, hari-dalam-bulan, bulan, hari-dalam-minggu. Varian 6-field menambahkan field detik di depan dan digunakan oleh Quartz, Spring @Scheduled, dan banyak library Node cron. Ekspresi 6-field seperti "0 0 9 * * MON-FRI" terpicu pada 9:00:00 di hari kerja, sementara 5-field "0 9 * * MON-FRI" terpicu pada 9:00.
Apakah ini mendukung ekstensi Quartz seperti L, W, dan #?
Penjelas ini mendukung dialek Unix / Vixie cron yang umum ditambah field detik awal opsional. Token khusus-Quartz (L untuk terakhir, W untuk hari kerja, # untuk hari kerja ke-n, dan placeholder ?) bukan bagian dari standard cron dan tidak dijamin parse. Jika Anda mengandalkannya, gunakan dokumentasi spesifik penjadwal untuk memverifikasi ekspresi.
Mengapa 0 0 * * * terpicu pada waktu yang berbeda dari yang saya harapkan?
Ekspresi cron tidak memiliki zona waktu. Pekerjaan berjalan pada tengah malam di zona waktu mesin atau kontainer yang memiliki penjadwal. Di Kubernetes CronJobs, GitHub Actions, dan AWS EventBridge itu default ke UTC. Jika Anda ingin tengah malam lokal, atur zona waktu penjadwal secara eksplisit (spec.timeZone pada CronJob, variabel env TZ, kunci timezone cron.yaml).
Bisakah saya menggabungkan hari-dalam-bulan dan hari-dalam-minggu?
Di standard Vixie cron, jika hari-dalam-bulan dan hari-dalam-minggu keduanya dibatasi, pekerjaan terpicu ketika salah satu cocok — itu adalah OR, bukan AND. Jadi "0 0 15 * MON" berjalan pada tanggal 15 setiap bulan dan setiap Senin. Quartz membalikkan ini dan memperlakukan satu field sebagai diperlukan menjadi "?" untuk menghilangkan ambiguitas.
Bagaimana nilai langkah bekerja?
Langkah menggunakan sintaks rentang/langkah. "*/15 * * * *" terpicu setiap 15 menit dimulai pada :00. "10-50/20" di dalam field menit terpicu pada :10, :30, :50. Langkah bukan berarti "setiap N dari sekarang" — batas selalu sejajar dengan awal rentang, jadi jangan mengharapkan langkah melayang dengan waktu saat ini.
Apakah Anda menyimpan ekspresi cron yang saya uji di sini?
Tidak. Kami tidak menyimpan catatan ekspresi yang Anda ketik. Apa pun yang Anda tempel atau eksperimenkan dibuang saat Anda menutup atau menyegarkan halaman — tidak ada log, tidak ada analitik pada jadwal yang Anda kerjakan. Anda bisa memeriksa developer tools browser Anda jika ingin jaminan ekstra.