Tuesday, March 9, 2010

Eksekusi perintah otomatis terjadwal dengan CRONTAB

I. Pendahuluan

Crond 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. Dan harus diingat bahwa crontab adalah nama untuk daftar cron-job dan nama dari perintah untuk mengedit daftar tersebut.


II. Jenis-jenis Cron

Ada 3 implementasi cron yang dikenal dalam GNU/Linux, yaitu:
1. 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.

2. 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.

3. 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.

4. 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.

III. Crontab di Centos

Di distro centos, file crontab ada di direktory /etc dan untuk melihatnya ketik perintah ini:
# vi /etc/crontab
dan secara asal akan terlihat sebagai berikut:

alt
Untuk melihat perintah-perintah apa saja yang digunakan di crontab, tuliskan perintah:
# crontab --help

Pada umumnya, perintah yang sering dipergunakan adalah

# crontab -e
Digunakan untuk mengedit file crontab

# crontab -l
Digunakan untuk melihat file crontab


IV. Penjadwalan Crontab

Di file crontab ada 7 blok yang dipergunakan apabila kita ingin menjadwalkan sesuatu di dalam linux.

* * * * * * *
Blok I Blok II Blok III Blok IV Blok V Blok VI Blok VII
Menunjukkan
Menit
(0-59)
Menunjukkan
Jam
(0-23)
Menunjukkan Tanggal
(1-31)
Menunjukkan Bulan
(1-12)
Menunjukkan Hari
(1-7)
Menunjukkan User (Optional) Menunjukkan Letak Perintah

Contoh-contoh crontab:
- 30 05 * * * root rm /var/log/httpd/*
Perintah ini menunjukkan bahwa setiap hari pukul 05.30 pagi, perintah "rm /var/log/httpd/*" akan dieksekusi, yang berrati akan menghapus semua file dalam folder /var/log/httpd

- 10 05 01 * * root /bin/sh /etc/script.sh
Perintah ini menunjukkan bahwa setiap tanggal 1 setiap bulannya akan dieksekusi kumpulan perintah pada file "/etc/script.sh"

- 30 0 1 1,6,12 * rm /home/heri/*
Perintah ini menunjukkan bahwa setiap tanggal 1 jam 00.30 pada bulan januari, juni, dan desember akan dihapus file /home/heri/*

- 0 20 * 10 1-5 /usr/bin/freshclam -l /var/log/clamav/clam-update.log
Perintah ini menunjukkan bahwa setiap tanggal 1, 10, dan 15 setiap bulan tengah malam akan dijalankan script /usr/bin/freshclam dan menyimpan lognya di file /var/log/clamav/clam-update.log

- 5,10 0 10 * 1 rm /tmp/*
Perintah ini menunjukkan bahwa setiap jam 12.05 dan 12.10 hari senin pada tanggal 10 setiap bulan akan menghapus file-file yang ada di direktory tmp.

V. Lain-lain

1. Tanda * menunjukkan bahwa mengeksekusi perintah pada setiap waktu.

2. Apabila kita ingin menjadwalkan range pada salah satu bagian blok, maka bisa ditulis sebagai berikut:
Setiap tanggal 1,2,5,9 -->1,2,5,9
Setiap 2 jam --> */2 atau 0-23/2

3. Untuk blok bulan dan hari bisa ditulis dengan huruf namun hanya harus menggunakan 3 huruf pertama bulan atau hari dan dalam bahasa Inggris.
Contoh untuk bulan: jan,feb
contoh untuk hari : sun,mon

4. Blok keenam yang menunjukkan user tidak selalu harus ditulis.

5. Kita bisa membuat log hasil eksekusi crontab dengan cara menulisnya di file crontab
contoh:
30 6 * * 1 PATH/udin.sh > PATH/udin.log
Perintah ini menunjukkan bahwa setiap jam 06.30 hari senin akan dieksekusi skrip udin dan lognya akan di tulis di udin.log

No comments:

Post a Comment