CRON TAB
Cron adalah utilitas yang memungkinkan untuk secara otomatis menjalankan tugas-tugas di latar belakang dari sistem secara berkala dengan menggunakan daemon cron. Cron dikendalikan oleh crontab (tabel cron) file, sebuah file konfigurasi yang menentukan perintah shell untuk menjalankan secara berkala pada jadwal yang diberikan. Crontab (tabel cron) adalah file yang berisi sebuah file konfigurasi yang menentukan perintah shell untuk menjalankan secara berkala pada jadwal yang diberikan.
Hal Ini bisa sangat berguna,sebagai contoh, Anda mungkin memiliki direktori sementara pribadi yang ingin Anda dibersihkan sekali sehari untuk menjaga kuota agar tidak terlampaui. Di sinilah penjadwalan cron berfungsi. Tidak semua sistem memungkinkan untuk Penjadwalan Cron. Anda harus mengecek sistem Anda untuk melihat apakah Cron tersedia pada sistem Anda. Biasanya File crontab disimpan pada /etc/crontab.
Tutorial ini akan menjelaskan bagaimana menggunakan Cron dan crontab dan berisi beberapa contoh dasar dari Cron/Crontab yang diharapkan dapat menggambarkan bagaimana Cron itu berfungsi.
Tutorial ini akan menjelaskan bagaimana menggunakan Cron dan crontab dan berisi beberapa contoh dasar dari Cron/Crontab yang diharapkan dapat menggambarkan bagaimana Cron itu berfungsi.
- Install crontab
Hal ini apabila system anda belum tersedia system Cron jadi harus diinstall cron-nya, cara install nya adalah :
root@ubuntu# sudo apt-get install cron
- Command Crontab
- root@ubuntu# crontab –e
Command untuk mengedit atau create file Cron
- root@ubuntu# crontab –l
Command untuk melihat list/ daftar cron
- root@ubuntu# crontab –r
command untuk menghapus daftar cron
- Format penulisan file Crontab
Penjelasan :
5 bintang (*) diatas merepresentasikan bagian2 format waktu yang berbeda, urutannya sebagai berikut :
- (* pertama) : menit (isian : 0 – 59)
- (* kedua) : jam (isian : 0 – 23)
- (* ketiga) : hari dari bulan / tanggal (isian : 1 – 31)
- (* keempat) : bulan (isian : 1 – 12)
- (* kelima) : hari dari minggu (isian : 0 – 6) –> 0 = minggu
Contoh:
0 0 * * * /etc/init.d/apache2 restart
artinya : Setiap hari pada tengah malam server akan menjalankan perintah restart apache.
59 23 * * 6 shutdown -r now
artinya : setiap hari sabtu (6 menunjukan hari Sabtu ) pukul 23:59 WIB server akan melakukan perintah shutdown dan restart.
Ada beberapa nilai-nilai standar khusus yang dapat digunakan untuk mengganti ekspresi CRON.
|
Cara penggunaanya sebagai berikut :
@daily /etc/init.d/mysql restart
artinya : Setiap hari pada tengah malam server akan menjalankan perintah restart service MySQL
@weekly shutdown -r now
Tulisan di bawah ini adalah sebagai sebuah contoh kasus singkat penggunaan crontab.
Setiap hari sabtu pada jam 6 sore komputer shutdown (mati). Setelah itu setiap pergantian bulan pada tanggal 1 dengan otomatis akan mengkompres direktori /home menggunakan kompresi bz2 dan file hasil kompresannya di letakkan pada direktori /tmp dengan nama rekapbulanan.tar.bz2
Serta setiap tanggal 31 Desember setiap tahun akan otomatis melakukan backup direktori /data ke direktori /backup.
menit / jam / tanggal / bulan / hari / Perintah
* * * * * xxxxx
Berikut adalah contoh penulisannya untuk komputer kita otomatis mati pada pukul 18.00:
menit / jam / tanggal / bulan / hari / Perintah
=======================================
* 18 * * 6 /sbin/init 0
atau
menit / jam / tanggal / bulan / hari / Perintah
=======================================
* 18 * * 6 init 0
Berikut adalah contoh penulisannya untuk perintah setiap pergantian bulan pada tanggal 1 dengan otomatis akan mengkompres direktori /home menggunakan kompresi bz2
menit / jam / tanggal / bulan / hari / Perintah
=======================================
0 0 1 * * tar -cjf /tmp/bulan.tar.bz2 /home
Berikut adalah contoh penulisannya untuk perintah setiap tanggal 31 Desember setiap tahun akan otomatis melakukan backup direktori /data ke direktori /backup.
menit / jam / tanggal / bulan / hari / Perintah
=======================================
0 0 31 12 * cp -r /data /backup
Perintah Crontab
Perintah crontab adalah sebagai berikut:
crontab -u [nama_user] { -e | -l -r }
Keterangan:
- -u : user yang menjalankan cron (optional). Jika tidak di set maka di user saat ini yang digunakan
- -e : edit crontab
- -l : list atau daftar crontab
- -r : remove atau menghapus crontab
Contoh penggunaan perintah tersebuta adalah sebagai berikut:
crontab -u bagas -l —> menampilkan list crontab user bagas
crontab -l —> menampilkan list crontab user saat ini
crontab -u bagas —> mengedit crontab user bagas
crontab -r bagas —> menghapus crontab user bagas
Saat kita menggunakan perintah “crontab -e” (tanpa tandapetik) maka akan muncul editor yang di dalamnya terdapat list perintah terjadwal untu user terkait. Jika Anda belum pernah menambahkan apapun pada crontab file ini biasanya kosong.
Penulisan Crontab
Ketentuan mengedit crontab urutannya adalah sebagai berikut:
m h dom mon dow command
Keterangan:
- m : minute (menit), diisi 0 – 59 atau * untuk tidak memakai parameter ini
- h : hour (jam), diisi 0-23 atau * untuk tidak memakai parameter ini
- dom : day of month (tanggal), diisi 0-31 atau * untuk tidak memakai parameter ini
- mon : month (bulan), diisi 1-12 atau * untuk tidak memakai parameter ini
- dow : day of week (hari), diisi 0-6 dimana 0 = minggu, 1= senin, dst atau * untuk tidak memakai parameter ini
- command (perintah), diisi perintah yang akan dieksekusi. Bisa perintah dasar linux atau bisa juga kumpulan perintah dalam suatu file yang bisa dieksekusi sebagaimana contoh pada artikel saya tentang back up database.
- Parameter m,h,dom,mon,dow dapat juga digantikan dengan cukup menuliskan @hourly (menjalankan perintah tiap jam), @daily (menjalankan perintah setiap hari jam 00:00), @weekly (menjalankan perintah tiap hari minggu jam 00:00), atau @monthly (menjalankan perintah tiap awal bulan jam 00:00).
- Parameter m,h,dom,mon bisa juga dituliskan dengan format “*/n” (tanpa tanda petik) dimana n adalah numeric.
- Parameter m,h,dom,mon,dow bisa juga ditulis lebih dari 1 dengan separator koma (“,”).
Parameter Waktu
Untuk lebih memperjelas tulisan ini saya akan coba jelaskan beberapa format parameter waktu yaitu parameter m (minute), h (hour), dom (day of month), mon (month), dan dow (day of week).
Format @waktu. Nilai yang sesuai adalah @hourly, @daily, @weekly, @monthly.
Contoh :
@monthly rm /home/someuser/tmp/*
Contoh Crontab
Dibawah ini adalah beberapa contoh penulisan crontab:
@hourly rm /home/someuser/tmp/*
@daily rm /home/someuser/tmp/*
@weekly rm /home/someuser/tmp/*
@monthly rm /home/someuser/tmp/*
30 0 1 1,6,12 * rm /home/someuser/tmp/*
Disable Email
Secara default crontab akan mengirimkan email kepada user account yang menjalankan cronjob. Jika Anda tidak menginginkannya tambahkan baris berikut pada akhir baris cronjob:
> /dev/null 2>&1
Contoh:
@monthly rm /home/someuser/tmp/* > /dev/null 2>&1
Membuat Log
Berikut adalah contoh jika Anda ingin membuat file log dari cronjob yang dijalankan:
@monthly rm /home/someuser/tmp/* > /home/someuser/cronlog/hapus_temporary_file.log
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.
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.
Lihat file crontab yang ada dengan perintah :
# crontab -l
misalkan salah satu contohnya
# 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. 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 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
Jadi sekarang silahkan atur sesuai kebutuhan, misalkan untuk meng-update antivirus secara periodik, untuk backup file, dll. Dan jangan lupa pastikan daemon cron sudah pasti berjalan pada sistem
# ps -aux | grep cron
Contoh:
* * * * * perintah => setiap menit
*/10 * * * * perintah => setiap 10 menit
10 * * * * perintah => menit 10 tiap jam
30 18 * * * perintah => setiap jam 18:30
30 08 10 06 * perintah => tanggal 10 bulan juni (06) jam 08:30
00 11,16 * * * perintah => setiap hari jam 11:00 dan 16:00
00 11-16 * * * perintah => setiap hari jam 11:00 s/d 16:00
00 08-16 * * 1-5 perintah => Jam 08:00 s/d 16:00 pada hari 1-5 (senin s/d jum'at)
*/15 6-10 * * * perintah => setiap 15 menit dari jam 6 - 10
@monthly perintah => sama dengan @yearly tapi awal bulan (0 0 1 * *)
@weekly perintah => mingguan (0 0 * * 0)
@daily perintah => awal hari (0 0 * * *)
@hourly perintah => awal hari (0 * * * *)
@reboot perintah => setiap habis reboot
Tidak ada komentar:
Posting Komentar