Pengurai Ekspresi Cron
Lima field yang dipisahkan spasi, atau singkatan seperti @daily.
Anda mewarisi crontab yang penuh baris seperti 0 */2 * * 1-5 dan 30 3 * JAN,JUL 1. Pengurai ini menguraikan tiap field menjadi nilai persis yang dicocokkannya, jadi alih-alih menebak apa saja yang dicakup */2, Anda langsung melihat dua belas jam yang dipilihnya beserta jumlahnya. Anda juga mendapat bentuk 5 field yang sudah dinormalkan, peringatan ketika ekspresinya termasuk jebakan yang sudah dikenal, dan 5 waktu eksekusi berikutnya yang dihitung dalam zona waktu Anda sendiri.
Cara mengurai ekspresi cron
-
1
Tempel ekspresinya
Satu baris 5 field (`* * * * *`): menit, jam, hari dalam bulan, bulan, dan hari dalam minggu. Singkatan seperti `@daily` juga bisa.
-
2
Baca uraian tiap field
Tiap field ditampilkan beserta nilai yang dicocokkannya dan berapa jumlahnya, jadi `*/2` di field jam memperlihatkan 0, 2, 4, dan sembilan nilai lain yang tercakup.
-
3
Periksa pratinjau eksekusi berikutnya
5 waktu eksekusi mendatang, dihitung di browser Anda berdasarkan zona waktu Anda sendiri. Kalau tidak sesuai maksud Anda, perbaiki ekspresinya.
-
4
Baca peringatannya
Pengurai menandai jebakannya: dua field hari sama-sama diisi, tanggal yang tidak mungkin ada, atau operator yang tidak dimengerti cron standar.
Uraian setiap field
Sebuah field bukan satu nilai, melainkan satu himpunan nilai. Mengetahui seberapa besar himpunan itu biasanya sudah menjawab pertanyaan yang membawa Anda ke sini.
| Field | Rentang | Cakupan * |
Catatan |
|---|---|---|---|
| Menit | 0-59 | 60 nilai | Sumber paling umum tugas yang berjalan tak terkendali |
| Jam | 0-23 | 24 nilai | Format 24 jam, bukan 1-12 |
| Hari dalam bulan | 1-31 | 31 nilai | Bulan yang pendek melewati begitu saja tanggal yang tidak ada |
| Bulan | 1-12 | 12 nilai | JAN sampai DEC juga diterima |
| Hari dalam minggu | 0-7 | 7 nilai | 0 dan 7 sama-sama hari Minggu |
Operator di dalam satu field: * semua nilai, 1,5,10 sebuah daftar, 1-5 sebuah rentang, */15 sebuah langkah yang dihitung dari awal rentang, dan 0-45/15 sebuah langkah di dalam rentang.
Nama dan singkatan juga diterima
Nama bulan dan nama hari dalam minggu bisa dibaca, lalu diuraikan menjadi angka yang dicocokkannya, jadi 30 3 * JAN,JUL 1 melaporkan bulan 1, 7 dan hari dalam minggu 1. Singkatan bernama diuraikan lebih dulu ke bentuk 5 field-nya sebelum hal lain diproses:
| Singkatan | Diuraikan menjadi | Artinya |
|---|---|---|
@yearly, @annually |
0 0 1 1 * |
Tengah malam pada 1 Januari |
@monthly |
0 0 1 * * |
Tengah malam pada tanggal 1 |
@weekly |
0 0 * * 0 |
Tengah malam pada hari Minggu |
@daily, @midnight |
0 0 * * * |
Tengah malam setiap hari |
@hourly |
0 * * * * |
Pada awal setiap jam |
@reboot juga dikenali, tetapi tidak ada jadwal yang bisa diuraikan: ia berjalan sekali saat mesin dinyalakan, jadi tidak ada waktu eksekusi yang bisa dipratinjau.
Peringatan yang perlu dibaca
- Dua field hari sama-sama dibatasi.
0 0 1 * MONbukan berarti “tanggal 1, tetapi hanya kalau tanggal itu jatuh pada hari Senin”. Cron standar memperlakukan dua field hari itu sebagai OR ketika keduanya dibatasi, jadi baris tersebut berjalan setiap tanggal 1 dan setiap hari Senin. Pengurai memunculkan peringatan ini, dan pratinjau waktu eksekusinya mengikuti aturan OR yang sama. - Tanggal yang tidak pernah ada.
0 0 30 2 *meminta tanggal 30 Februari. Ekspresinya sah secara sintaksis dan cron akan menerimanya, tetapi tugasnya tidak akan pernah berjalan. Pengurai menyatakannya terus terang, alih-alih menampilkan daftar kosong tanpa penjelasan. - Operator Quartz.
L(terakhir),W(hari kerja terdekat),#(hari dalam minggu ke-n) dan?adalah ekstensi Quartz, bukan crontab standar. Di dalam baris 5 field, operator-operator itu dikenali dan ditandai, lalu field yang bersangkutan menunjukkan bahwa isinya operator Quartz, bukan daftar nilai. Waktu eksekusi tidak dihitung, karena cron standar memang tidak akan menjalankan baris itu sama sekali.
Apa yang langsung ditolak
- Jumlah field yang salah. Baris Quartz 6 field yang memakai detik, atau baris 7 field yang memakai tahun, ditolak karena jumlah field-nya.
- Nilai di luar rentang, misalnya menit 75 atau bulan 13.
- Rentang menurun seperti
5-1. - Langkah nol, seperti
*/0.
Setiap penolakan menyebutkan field dan nilai yang menyebabkannya, jadi Anda cukup memperbaiki satu hal, bukan menulis ulang seluruh baris.
Zona waktu
Pratinjau eksekusi berikutnya dihitung di browser Anda, dalam zona waktu yang disetel pada perangkat Anda (WIB adalah UTC+7, WITA UTC+8, dan WIT UTC+9). Sebuah crontab berjalan mengikuti zona waktu mesin yang menjalankannya, jadi kalau server itu memakai UTC sementara perangkat Anda tidak, geser dulu waktunya sebelum membandingkan.
Pertanyaan yang Sering Diajukan
Tidak sebagai jadwal. Baris Quartz 6 field yang memakai detik, atau baris 7 field yang memakai tahun, ditolak karena jumlah field-nya. Operator Quartz di dalam baris 5 field biasa (L, W, #, ?) adalah kasus yang berbeda: operator itu dikenali dan ditandai, tetapi waktu eksekusi tidak dihitung, karena cron standar pun tidak akan menjalankan baris tersebut.
Penyebab yang biasa adalah selisih zona waktu antara perangkat Anda dan server yang menjalankan crontab, atau dua field hari yang sama-sama diisi. Ketika hari dalam bulan dan hari dalam minggu sama-sama dibatasi, cron berjalan saat salah satu cocok, bukan keduanya sekaligus, sehingga 0 0 1 * MON berjalan jauh lebih sering daripada dugaan kebanyakan orang. Jumlah nilai di samping tiap field adalah cara tercepat menemukan field yang ternyata lebih luas daripada yang Anda kira.
Bisa. Kubernetes memakai sintaks standar 5 field. Satu hal yang perlu disesuaikan adalah jamnya: sebuah CronJob berjalan mengikuti zona waktu cluster (UTC kecuali spec.timeZone menentukan lain), sedangkan pratinjau di sini memakai zona waktu perangkat Anda sendiri.
Keduanya singkatan bernama yang diterima cron Linux sebagai pengganti lima field. @daily (juga @midnight) sama dengan 0 0 * * *, @weekly sama dengan 0 0 * * 0, @monthly sama dengan 0 0 1 * *, @yearly (juga @annually) sama dengan 0 0 1 1 *, dan @hourly sama dengan 0 * * * *. Tempel salah satunya dan pengurai akan menunjukkan bentuk 5 field hasil uraiannya. @reboot adalah pengecualian: ia berjalan sekali saat mesin dinyalakan, jadi tidak punya jadwal dan tidak punya waktu eksekusi.
Alat Terkait
Referensi Tabel ASCII
Tabel ASCII lengkap dari 0 sampai 127 dengan desimal, heksadesimal, oktal, biner, dan referensi karakter numerik HTML untuk setiap karakter, termasuk kode kontrol seperti NUL, LF, dan DEL.
Referensi Karakter HTML
Daftar entitas HTML yang dapat dicari, beserta kode bernama dan kode numeriknya, serta fitur salin dengan satu klik untuk karakter khusus dan simbol.
Referensi pintasan papan ketik
Cari pintasan bawaan terdokumentasi untuk VS Code, Chrome, dan Bash dengan GNU Readline di macOS, Windows, dan Linux.
JSON ke YAML
Konversi JSON ke YAML dengan penjelajaran yang tepat, penutupan string yang aman, skalar blok berbaris ganda, serta kunci yang tersortir untuk konfigurasi yang lebih rapi.
Decoder JWT
Dekode header dan payload JWT, tampilkan klaim beserta pemeriksaan masa kedaluwarsa dan algoritma tanda tangan, lalu verifikasi menggunakan rahasia bersama atau kunci publik.
Konverter Ukuran File
Konversi antara byte, KB, MB, GB, TB, dan satuan biner IEC (KiB, MiB, GiB, TiB) dengan kombinasi desimal dan biner apa pun yang Anda inginkan.
Alat ini tersedia dalam bahasa lain
- Cron 式パーサー [JA]
- محلل تعبيرات cron [AR]
- Analyseur d'expressions cron [FR]
- Bộ phân tích biểu thức Cron [VI]
- Cron-expressieparser [NL]
- Cron-Ausdruck-Parser [DE]
- เครื่องมือแยกวิเคราะห์นิพจน์ Cron [TH]
- Analisador de Expressões Cron [PT]
- Cron 표현식 파서 [KO]
- Analizador de expresiones cron [ES]
- Parser för cron-uttryck [SV]
- Parser wyrażeń cron [PL]
- Cron 表达式解析器 [ZH]
- Cron Expression Parser [EN]
- Parser di espressioni cron [IT]
- Парсер cron-выражений [RU]
- Cron İfadesi Ayrıştırıcı [TR]