Cara Memvalidasi Ekspresi Cron: Panduan Langkah demi Langkah
Cara Memvalidasi Ekspresi Cron
Ekspresi cron bersifat ringkas namun mudah salah. Garis miring yang salah tempat atau nilai di luar rentang dapat menyebabkan tugas berjalan pada waktu yang salah — atau tidak berjalan sama sekali. Memvalidasi ekspresi sebelum penerapan menghemat waktu berjam-jam debugging ketika tugas penting gagal secara diam-diam.
Kesalahan Sintaks Umum
Nilai di Luar Rentang
Setiap field menerima rentang tertentu. Nilai di luar rentang ini tidak valid.
# Invalid: minute 60 is out of range (0-59)
60 * * * *
# Invalid: hour 24 is out of range (0-23)
0 24 * * *
Field yang Hilang
Ekspresi cron memerlukan tepat lima field. Empat field tidak valid, enam field memerlukan sintaks yang diperluas.
# Invalid: only 4 fields (missing day of week)
0 0 * *
# Invalid: 6-field syntax without proper daemon support
0 0 * * * * /command.sh
Selalu hitung: menit, jam, hari-dalam-bulan, bulan, hari-dalam-minggu.
Nilai Langkah yang Salah
# Invalid: cannot step by 0
*/0 * * * *
# Invalid: step exceeds field maximum
*/61 * * * *
Nilai langkah harus dimulai dari 1 dan tidak melebihi maksimum field.
Cara Memvalidasi Ekspresi Cron
Langkah 1: Parsing ke dalam Field
Pisahkan berdasarkan spasi dan verifikasi tepat lima field:
Expression: 30 6 * * 1-5
Fields: minute=30, hour=6, day=*, month=*, weekday=1-5
Langkah 2: Validasi Setiap Field
| Field | Rentang yang Diizinkan | Menerima Karakter Khusus |
|-------|----------------------|--------------------------|
| Menit | 0-59 | * , - / |
| Jam | 0-23 | * , - / |
| Hari dalam Bulan | 1-31 | * , - / |
| Bulan | 1-12 | * , - / |
| Hari dalam Minggu | 0-7 | * , - / |
Langkah 3: Periksa Konflik
Beberapa ekspresi valid secara sintaks tetapi mengejutkan secara logika:
# Runs on the 15th OR every Sunday — an OR condition
0 0 15 * 0
Hari-dalam-bulan dan hari-dalam-minggu bersama-sama menciptakan kondisi OR di cron standar. Tugas berjalan ketika salah satu cocok.
Langkah 4: Pratinjau Waktu Mendatang
Hasilkan waktu eksekusi untuk memverifikasi jadwal Anda secara visual:
Expression: 0 2 * * 1
Next 5 executions:
1. 2026-07-27 02:00:00 (Monday)
2. 2026-08-03 02:00:00 (Monday)
3. 2026-08-10 02:00:00 (Monday)
Jika pratinjau tidak sesuai dengan maksud Anda, perbaiki ekspresi sebelum produksi.
Men-debug Tugas yang Tidak Berjalan
Ekspresi yang valid tetapi tidak berjalan biasanya merupakan masalah sistem:
- Izin — skrip harus memiliki izin eksekusi (
chmod +x). - Path — cron menggunakan PATH minimal. Selalu gunakan path absolut:
/usr/local/bin/mybackup.shbukanmybackup.sh. - Environment — cron tidak memuat profil shell. Ekspor variabel di dalam crontab atau skrip itu sendiri.
- Logging — arahkan output untuk mengonfirmasi eksekusi:
0 6 * * * /path/to/script.sh >> /var/log/cron.log 2>&1
Menggunakan Alat Validator
Validator ekspresi cron menyediakan tiga fungsi:
- Validasi sintaks — umpan balik langsung tentang nilai field dan format.
- Pratinjau jadwal — lihat waktu eksekusi mendatang dari tanggal saat ini.
- Kalender visual — eksekusi terjadwal diplot pada kalender bulanan.
Tidak ada ekspresi cron yang boleh diterapkan tanpa melihat pratinjau beberapa waktu eksekusi berikutnya. Pemeriksaan tiga puluh detik mencegah kegagalan penjadwalan yang diam-diam.