Format Penulisan
menit jam hari bulan minggu perintah
00-59 00-23 01-31 01-12 00-06 linux command
| | | | |
| | | | —- 00 = hari minggu
| | | ———– 01 = bulan januari
| | ——————- 01 = tanggal 1 setiap bulannya
| ————————- 00 = jam 24.00 (format 24 jam)
——————————– 00 = masuk detik pertama; 01 = menit pertama
Aturan Penulisan
Untuk penulisan rules cron, ada beberapa operator aritmetik yang dapat kita gunakan sebagai berikut:
1. Operator Asterisk ‘ * ‘ = Setiap waktu
Contoh : * * * * * rm -rf /tmp/*
Perintah rm -rf /tmp/* akan dieksekusi setiap menit.
2. Operator comma ‘ , ‘ = 1,2,7,8, dst
Operator comma diartikan ‘dan’. Dari format diatas berarti setiap angka 1 dan 2 dan 7 dan 8 dan seterusnya
Contoh : * 1,13 * * * rm -rf /tmp/*
Perintah rm -rf /tmp/* akan dieksekusi setiap jam 1.00 dan jam 13.00 setiap harinya.
3. Operator dash ‘ – ‘ = 1-5
Operator dash mengandung arti ‘sampai’. Dari format diatas artinya angka 1 sampai 5.
Contoh : 1-3 * * * * rm -rf /tmp/*
Perintah rm -rf /tmp/* akan dieksekusi setiap menit 1 sampai menit 3 setiap jamnya.
4. Operator Slash ‘ / ‘ = Setiap kelipatan
Contoh : */3 * * * * rm -rf /tmp/*
Perintah rm -rf /tmp/* akan dieksekusi setiap kelipatan 3 menit mulai dari 0 yaitu 0,3,6,9,12, dst
Menggunakan Cron
Terdapat beberapa cara yang dapat digunakan untuk membuat jadwal cron yaitu:
1. Menggunakan /etc/cronn.* directory
/etc/cron.* disini adalah cron.hourly, cron.daily, cron.weekly dan cron.monthly. Teknik ini cukup sederhana karena dengan menyimpan file atau script disalah satu directory tersebut maka akan tereksekusi jika waktunya tiba. Jika ingin menjadwalkan setiap menit 1 masukkan di /etc/hourly. Jika ingin menjadwalkan eksekusi pada jam tertentu masukkan dalam directory /etc/daily. Begitu seterusnya sampai range jadwal perbulan.
Teknik ini kadang kurang fleksibel karena waktu eksekusi jadwal adalah sama yang didefinisikan dalan file /etc/crontab. Berikut ini adalah isi crontab default.
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
Jika terdapat beberapa file dalam directory /etc/cron.hourly misalnya maka file-file tersebut akan dieksekusi dalam waktu bersamaan dan tentunya akan membuat kinerja sistem lebih terasa berat. Teknik ini juga hanya berlaku untuk user root, jika ada user biasa yang ingin mengeksekusi atau membuat cron maka harus memiliki akses root.
File yang ditempatkan disalah satu directory /etc/cron.* harus memiliki izin eksekusi minimal 700 karena file-file tersebut nantinya akan dieksekusi oleh cron.
2. Meggunakan /etc/crontab files
Teknik ini dan sebelumnya hanya dapat dimanage oleh user root karena hak akses keduanya dimiliki oleh user root sedangkan user lain tidak memiliki. Pada teknik ini, kita cukup menambahkan rules cron pada file /etc/crontab sesuai keinginan.
[root@server01 etc]# vim /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
# add new rules below; misalnya
05 12 * * * perl /var/www/html/fun/work/catatanku/tool/auto_backup_suarabaru_month.pl
Baris paling bawah pada contoh diatas adalah script backup yang dijalankan setiap pukul 12.05 siang.
3. Menggunakan crontab command
Untuk manajemen penjadwalan, perintah yang digunakan untuk sistem operasi Linux adalah crontab. Perintah crontab ini berlaku untuk semua user system untuk memasukkan jadwal pekerjaan, misalnya yang menjalankan perintah crontab adalah user admin maka jadwal pekerjaan cron hanya untuk user admin sendiri.
Melihat Jadwal Pekerjaan
Untuk melihat jadwal pekerjaan gunakan option l (-l) diperintah crontab
crontab -l
Memasukkan jadwal baru
Untuk memasukkan jadwal pekerjaan baru gunakan option e (-e)
crontab -e
Perintah crontab -e akan menulis sebuah file yang akan disimpan dalam directory /var/spool/cron dimana akan disesuaikan dengan user yang membuat tabel cron. Jika user root menjalankan perintah crontab -e maka setelah disimpan otomatis akan terdapat satu file dalam directory /var/spool/cron yaitu root file, root file ini berisi tabel cron yang dibuat oleh user root begitu juga jika ada user lainnya yang menggunakan perintah crontab -e akan disesuaikan dengan nama user masing-masing.
Menonaktifkan jadwal Pekerjaan
Untuk menonaktifkan jadwal pekerjaan gunakan # pada awal jadwal sehingga oleh system linux dianggap sebagai komentar.
crontab -e
# 3 3 * * * rm -rf /tmp/*
Menghapus jadwal Pekerjaan
Untuk menghapus jadwal pekerjaan dari schejule crontab gunakan option r (-r)
crontab -r
Maka semua jadwal dalam tabel crontab akan dihapus
Jika ingin menghapus hanya satu baris gunakan fungsi editor vim.
Contoh Kasus Crontab
Cron Setiap Jam
10 * * * * /home/wiwin/script/cron_index.sh
Rule cron tersebut akan menjalankan script cron_index.sh setiap menit ke 10 tiap jamnya.
10,40 * * * * /home/wiwin/script/cron_index.sh
Rule cron tersebut akan menjalankan script cron_index.sh setiap menit ke 10 dan menit 40 setiap jamnya.
Cron Setiap Hari
00 03 * * * wget http://www.wevils.com/back_up/backup.tar.gz
Rule diatas akan mendownload file backup.tar.gz dari www.co-iwp.dev setiap pukul 03.00 setiap harinya.
Cron Setiap Minggu Sekali
01 00 * * 00 /usr/bin/rsync -avz /var/lib/mysql /mnt/sdb
Jadwal cron diatas akan dijalankan setiap hari minggu jam 00.01 untuk melakukan proses singkronisasi data antara directory /var/lib/mysql dengan /mnt/sdb.
Angka 00 terakhir menunjuk hari minggu/sunday. Jika ingin dieksekusi setiap hari jumat angka 00 terakhir diganti dengan 05.
Cron Setiap Tanggal 7 setiap bulan
00 6 7 * * rm -rf /tmp/log_file
Jadwal cron diatas akan dijalankan setiap tanggal 7 jam 06.00 dimana log_files di directory /tmp akan dihapus.
Cron Setahun Sekali
1 0 1 1 * cat > /home/wiwin/selamat_tahun_baru
Cron diatas akan dijalankan setiap bulan 1 tanggal 1 jam 00.01 setiap tahunnya.