Lompat ke konten utama

Pembaca & Penyusun Jadwal Cron

Baris cron itu artinya apa, dan berapa kali sehari jalannya

Terjemahkan ekspresi cron menjadi kalimat, hitung berapa kali ia berjalan, dan susun baris crontab yang siap ditempel — lengkap dengan pengalihan log dan pencegah tumpang tindih.

Urutannya: menit, jam, tanggal, bulan, hari.

Dipakai untuk menyusun baris crontab yang siap ditempel.
Tanpa ini, cron mengirim outputnya sebagai email lokal.
Untuk tugas yang bisa berjalan lebih lama daripada jedanya.
Hasil

Seluruh perhitungan berjalan di browser Anda. Alamat IP, nama interface, dan password yang Anda masukkan tidak pernah dikirim ke server CoreNet.

Yang paling berguna di sini adalah membacanya

Menyusun jadwal baru itu mudah. Yang sulit adalah membaca baris yang sudah ada di crontab orang lain — /15 3-5 * 1-5 sah, sering ditemui, dan hampir tidak pernah dibaca benar dalam sekali lihat.

Tool ini menerjemahkannya menjadi kalimat, lalu menghitung berapa kali sehari ia berjalan. Angka kedua itu yang biasanya mengejutkan.

Lima medan, urutannya

┌─ menit (0–59)
│ ┌─ jam (0–23)
│ │ ┌─ tanggal (1–31)
│ │ │ ┌─ bulan (1–12)
│ │ │ │ ┌─ hari (0–7, 0 dan 7 sama-sama Minggu)
│ │ │ │ │
* * * * *

*/5 berarti setiap kelipatan lima. 1-5 berarti rentang. 1,15 berarti dua nilai tertentu.

Jebakan yang sudah memakan banyak orang

Tanggal dan hari adalah "atau", bukan "dan". Bila keduanya diisi, cron menjalankan tugas pada tanggal yang cocok maupun pada hari yang cocok. Jadi 0 0 1 * 1 bukan berarti "tanggal 1 kalau jatuh Senin" — melainkan "setiap tanggal 1, dan juga setiap Senin". Bila yang diinginkan benar-benar irisan keduanya, cron tidak dapat menyatakannya; periksa harinya di dalam script.

PATH cron sangat pendek. Cron tidak membaca .bashrc maupun profil shell Anda. Perintah yang jalan mulus di terminal bisa gagal di cron hanya karena php tidak ditemukan. Tulis jalur penuh ke setiap program — ini penyebab nomor satu cron yang "tidak jalan padahal perintahnya benar".

Output menjadi email. Tanpa pengalihan, setiap baris output dikirim sebagai email lokal ke pemilik crontab. Pada server yang kotak emailnya tidak pernah dibaca, itu berarti file mail yang tumbuh diam-diam sampai penuh.

Tumpang tindih. Tugas yang berjalan lebih lama daripada jedanya akan bertumpuk. Jadwal per menit dengan tugas yang butuh tiga menit akan menghasilkan tiga salinan berjalan bersamaan, lalu enam, lalu server kehabisan memori. Centang "cegah tumpang tindih" untuk membungkusnya dengan flock.

Alternatif yang lebih baik untuk sebagian keperluan

systemd timer mencatat hasilnya rapi di journal, dapat menjalankan tugas yang terlewat karena mesin sedang mati, dan menyebar waktu mulai secara acak. Bila mesinnya sering dimatikan, generator unit systemd memberi hasil yang lebih dapat diandalkan daripada cron.

Pertanyaan yang sering diajukan

@daily dan @reboot itu apa? Pintasan yang dipahami sebagian besar cron modern. @daily sama dengan 0 0 *. @reboot berjalan sekali setiap mesin dinyalakan.

Kenapa cron saya jalan dua kali? Periksa apakah baris yang sama ada di crontab pengguna dan di /etc/cron.d/. Keduanya berjalan sendiri-sendiri.

Zona waktu mana yang dipakai? Zona waktu sistem. Periksa dengan timedatectl. Server yang disetel UTC akan menjalankan jadwal "pukul 2 pagi" pada pukul 9 pagi waktu Jakarta.

Lanjut ke