Crontab Guru
Tempel ekspresi cron dan dapatkan penjelasan bidang demi bidang, dalam bahasa Inggris sederhana, tentang apa yang dilakukannya. Tidak perlu mengingat urutan field atau mencari tahu rentangnya: guru membahas masing-masing dari lima bidang (menit, jam, hari-dalam-bulan, bulan, dan hari-dalam-minggu) dan membaca ekspresi dari kiri ke kanan. Berguna untuk memeriksa baris crontab sebelum men-deploy-nya, atau untuk menjelaskan baris yang Anda warisi.
Cara menggunakan guru
-
1
Tempel ekspresi
Salin ekspresi cron standar 5 bidang apa pun (misalnya `0 9 * * 1-5`) ke kolom input.
-
2
Minta penjelasan
Klik Explain Cron dan tool mengembalikan deskripsi baris demi baris untuk tiap bidang: menit, jam, hari-dalam-bulan, bulan, dan hari-dalam-minggu.
-
3
Baca deskripsinya
Penjelasan dihasilkan dalam bahasa Inggris, misalnya "Minute: every 5 minutes" atau "Hour: from 9 through 17."
-
4
Periksa sebelum men-deploy
Gunakan penjelasan untuk memastikan jadwal melakukan yang Anda inginkan sebelum memasukkannya ke crontab, konfigurasi CI, atau manifest Kubernetes.
Lembar contekan field
┌───────────── 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; Min = 0 atau 7)
│ │ │ │ │
* * * * *
Operator dalam ekspresi cron
| Operator | Arti | Contoh |
|---|---|---|
* |
Setiap nilai | * * * * * |
, |
Daftar nilai | 0,15,30,45 |
- |
Rentang | 9-17 |
/ |
Step (mulai/step) | */5, 0-30/5 |
L |
Terakhir (hari terakhir dalam bulan atau hari kerja terakhir yang cocok, Quartz) | L, 5L |
W |
Hari kerja terdekat | 15W (Quartz) |
# |
Hari yang cocok ke-N dalam bulan | 1#3 (Quartz) |
? |
Tanpa nilai spesifik | Hanya Quartz |
Urutan baca penting
0 */2 * * 1-5 dibaca kiri ke kanan sebagai: menit 0, setiap 2 jam, hari mana pun dalam bulan, bulan mana pun, Senin sampai Jumat. Orang kadang membaca field kanan-ke-kiri karena kebiasaan dan jadi bingung; selalu mulai dari menit.
Jebakan “setiap X menit”
*/10 * * * * berjalan pada menit 0, 10, 20, 30, 40, 50, bukan “setiap 10 menit sejak job dibuat.” Step cron selalu diukur dari awal rentang field. Jika Anda men-deploy job pada 12:03, run pertama adalah 12:10, bukan 12:13.
Untuk job yang benar-benar butuh “N menit setelah run terakhir,” gunakan scheduler dengan timer persisten (systemd timer dengan OnUnitActiveSec, atau penjadwalan tingkat aplikasi dengan timestamp last-run yang tersimpan).
Jebakan cron yang perlu diketahui
- Hari-dalam-bulan + hari-dalam-minggu keduanya diatur: sebagian besar implementasi cron menganggap ini perilaku OR, kemungkinan bukan yang Anda inginkan.
- Step 0:
*/0tidak valid. - Rentang melewati tengah malam:
22-2untuk jam tidak berfungsi di cron klasik; gunakan22-23,0-2. - 30 Februari: jadwal seperti
0 0 30 2 *tak pernah berjalan. - Ambiguitas DST: job yang dijadwalkan antara jam 2 dan 3 pagi mungkin berjalan dua kali atau nol kali pada hari transisi DST.
Cron vs. scheduler modern
Unix cron masih ada di mana-mana, tetapi untuk apa pun yang kritis Anda mungkin ingin:
- systemd timers: menangkap run yang terlewat, mendukung offset acak, membaca dari unit file.
- Kubernetes CronJob: deklaratif, retries, sadar timezone di 1.25+.
- Airflow / Prefect / Dagster: untuk job dengan dependensi, retries, backfill, observability.
- GitHub Actions schedule: cron 5-field, UTC saja, interval minimum 5 menit, pengiriman best-effort.
Cron sendiri adalah format yang bagus, tetapi scheduler yang buruk untuk job yang tidak boleh terlewat.
Pertanyaan yang Sering Diajukan
Karena hari-dalam-minggu 0 adalah Minggu di cron standar (dan 7 juga Minggu, mendukung kedua konvensi). Senin adalah 1. Quartz menomori hari 1-7 dengan Minggu = 1, yang sering membingungkan orang yang berpindah antar implementasi.
Unix cron klasik berjalan di timezone lokal server, apa pun yang tertulis di /etc/timezone. Kubernetes CronJob, GitHub Actions, dan sebagian besar scheduler cloud berjalan di UTC secara default. Selalu konfirmasikan dan, bila memungkinkan, gunakan UTC untuk menghindari kejutan DST.
Cron klasik tidak bisa mengekspresikan ini secara langsung. Solusi: jalankan setiap Senin dan periksa tanggal di dalam skrip: [ $(date +%d) -le 7 ] && ./job.sh. Quartz mendukungnya secara native dengan 1#1.
Tidak. Setiap jadwal butuh barisnya sendiri. Tetapi Anda bisa menggabungkan beberapa jadwal dalam satu baris dengan daftar: 0 9,17 * * * berjalan pukul 9 pagi dan 5 sore. Untuk jadwal yang tidak bisa diekspresikan sebagai satu baris, tambahkan beberapa baris yang mengarah ke perintah yang sama.
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.
Penghitung FPS
Ukur FPS browser dengan requestAnimationFrame: penghalusan, frame rate minimum dan maksimum, ambang peringatan, dan grafik opsional. Berjalan lokal, tanpa unggahan dan tanpa API.
Generator Warna Acak
Buat 1 hingga 50 warna HEX acak dengan contoh warna yang bisa dipratinjau, disalin, dan dipakai di CSS, pengujian, atau eksplorasi palet.
Pemilih Warna HEX
Pilih atau masukkan warna HEX untuk mendapatkan RGB, HSL, perkiraan CMYK, luminans relatif, serta kontras terhadap putih dan hitam.