Sebelum lanjut nulis crontab-nya… mau jelasin dulu dech bagi yang belum tau nich. Sebenarnya apa seh itu Cron ? Cron merupakan sebuah daemon yang menjalankan tugas yang telah dijadwalkan berdasarkan input dari perintah crontab. Cron menyelesaikan tugas ini dengan membangunkan dirinya setiap menit dan memeriksa apakah ada cron-job yang harus dijalankannya berdasarkan crontab user. Jadi ya semacam Scheduled Task kalo di Windows lah :p .
Catatan : ingatlah bahwa crontab adalah nama untuk daftar cron-job dan nama dari perintah untuk mengedit daftar tersebut.
Sebenarnya ada 3 implementasi cron yang dikenal dalam GNU/Linux, yaitu :
- Vixie cron
Vixie cron merupakan implementasi penuh fitur berbasis SysV cron. Setiap user memiliki crontab-nya masing-masing dan boleh menentukan variabel lingkungan di dalam crontab tersebut. Tidak seperti varian cron yang lain, cron ini juga
menawarkan dukungan untuk SeLinux dan PAM. Cron ini mendukung arsitektur lebih sedikit dari Dcron, tetapi lebih banyak dari Fcron. - Dillon’s Cron
Dcron diciptakan untuk menjadi implementasi cron yang sederhana, elegan, dan aman. Implementasi ini tidak mengizinkan spesifikasi variabel lingkungan di crontab dan semua cron-job dijalankan dari /bin/sh. Seperti Vixie cron, setiap user boleh memiliki crontab-nya sendiri. - Fcron
Fcron diciptakan untuk menjadi pengganti Vixie cron dan Anacron. Dirancang untuk bekerja pada sistem yang tidak selalu dinyalakan dan memiliki beberapa fitur tambahan. Memiliki penyekat startup job, kendali serialisasi job, kemampuan untuk menetapkan nilai “nice” ke job dan kemampuan untuk menjadwalkan job agar dijalankan ketika sistem startup. Bukalah website fcron untuk info lebih lanjut. - Anacron
Anacron bukanlah merupakan sebuah daemon cron, tetapi merupakan sesuatu yang biasanya bekerja sama dengan daemon cron. Anacron mengeksekusi perintah pada interval yang ditentukan dengan hitungan hari dan tidak menganggap bahwa sistem selalu menyala; ia akan menjalankan tugas-tugas yang terlewatkan ketika sistem sedang dimatikan. Anacron biasanya bergantung pada daemon cron untuk menjalankannya setiap hari.
Menjadwalkan cron-jobs
Proses pengeditan crontab berbeda untuk setiap paket, tetapi semuanya mendukung kumpulan perintah dasar yang sama: menambahkan dan menggantikan crontab, mengedit crontab, menghapus crontab, dan menampilkan daftar cron-job di cron-tab.
# crontab –help
Perintah diatas berguna untuk menampilkan option-option yang dimiliki oleh perintah crontab. Dalam penggunaannya saya paling sering mengunakan perintah contab -l dan crontab -e untuk melihat dan meng-edit file crontab-nya 😀
Cron yang digunakan pada distro saya adalah Dcron, gimana tahu-nya ya buka manualnya donk :p
Oke, sekarang coba kita lihat file crontab yang ada dengan perintah
# crontab -l
misalkan salah satu contoh yang saya punya
# update database clamav
15 1 * * * /usr/bin/freshclam -l /var/log/clamav/clam-update.log
Line yang diawali dengan # adalah comment dan tidak dieksekusi oleh cron. Hanya yang tidak di awali dengan tanda # yang dieksekusi. Arti line tersebut adalah “jalankan script /usr/bin/freshclam dan menyimpan log-nya file /var/log/clamav/clam-update.log pada setiap hari pada jam 01:15″. Tanda * artinya jalankan pada setiap waktu menurut periode masing-masing. sampai sini udah bingung kan ??? =)) Berikut penjelasan masing-masing kolom dalam crontab (5 periode waktu, plus satu kolom perintah).
* * * * * program/script yang ingin dijalankan
Arti :
* * * * * hari dalam 1 minggu (0 – 6) (Minggu = 0)
* * * * bulan (1 – 12)
* * * tanggal dalam 1 bulan (1 – 31)
* * jam (0 – 23)
* menit (0 – 59)
Dalam contoh diatas yang saya punya misalnya
15 1 * * * /usr/bin/freshclam -l /var/log/clamav/clam-update.log
Dapat dilihat bahwa pada jam 1.15 scrip/program /usr/bin/freshclam akan dijalankan setiap harinya (*).
Contoh lain misalkan kita ingin menjalankan script dodol.sh setiap hari Senin jam 6:30 dan meletakkan log nya di file dodol.log, maka isi crontab-nya adalah sbb :
30 6 * * 1 PATH/dodol.sh > PATH/dodol.log
Satu contoh lagi misalkan saya mau buat sebuah script yang akan mengingatkan saya pada jam 5.30 tentang hari ultah saya (tgl 29) dan juga ultah adik saya (tgl 12) pada bulan Juli (7) dan November (11), maka format penulisannya adalah :
30 5 11,29 6,12 * PATH/ultah.sh
Waaa… ternyata gampang yach… :p jadi sekarang silahkan dech atur sesuai kebutuhan, misalkan untuk meng-update antivirus secara periodik, untuk backup file, de el el lah poko`e…
Dan jangan lupa pastikan daemon cron udah pasti berjalan pada sistem
# ps -aux | grep cron
Wokehhh… udah ngatuk nech… lanjut ntar-ntar lagi dech 😀