Penjadwalan Proses dengan Cron di Linux

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.

Leave a Reply