Penggunaan Crontab


Crontab adalah sebuah perintah yang sangat berguna untuk menjalankan tugas-tugas yang terjadwal, sehingga akan mengurangi waktu administrasi. Selain crontab, ada juga perintah lain: anacron dan at. Anacron digunakan untuk melakukan penjadwalan suatu perintah untuk komputer yang tidak selalu menyala terus menerus. Anacron menggunakan interval waktu harian, mingguan, dan bulanan. Sedangkan perintah at menjalankan suatu tugas sekali pada satu waktu. Yang paling sering digunakan adalah crontab, karena lebih serba guna, dan dapat diatur untuk berjalan pada sembarang interval waktu.

Dalam melakukan administrasi sistem, pengaturan cron dilakukan melalui file crontab, yang berisi jadwal waktu dan script yang harus dieksekusi. System Linux memiliki file crontab default, yaitu /etc/crontab, yang akan menjalankan beberapa script pada waktu yang telah ditentukan, misalnya setiap jam, harian, mingguan, dan bulanan. Pertama kali membuka file ini, anda mungkin akan sedikit bingung.

[root@localhost ~]# cat /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
[root@localhost ~]#

Bagian pertama mengatur beberapa variabel:

SHELL

Baris pertama menentukan shell yang akan digunakan untuk menjalankan baris perintah. Defaultnya adalah /bin/sh.
PATH
Cron berjalan sebagai proses subshell, sehingga kita harus menentukan path atau menggunakan statement PATH pada crontab. Hal ini karena kita tidak melakukan login pada console pada saat akan menjalankan perintah, sehingga kita tidak mengakses file .bashrc atau .bash_profile, dan kita tidak memiliki environment variable seperti pada saat login sebagai user biasa atau root. Penting untuk diingat bahwa kita tidak bisa menampilkan data output tanpa menggunakan console  –  kita tidak memiliki layar untuk menampilkan data tersebut — sehingga setiap output yang kita butuhkan harus disimpan dalam sebuah file log.
MAILTO

Perintah “MAILTO=” pada baris berikutnya akan mengirimkan hasil dari pekerjaan cron kepada user root. Jika kita mendefinisikan MAILTO namun kosong, maka email dari cron akan diabaikan. Jika MAILTO tidak diset, maka email akan dikirimkan kepada user pemilik crontab.
HOME

Baris berikutnya menentukan direktori home yang akan digunakan oleh cron. Jika tidak diset, maka direktori home yang digunakan adalah yang ada pada file /etc/passwd.
# run-parts
Baris ini sebenarnya hanyalah sebuah komentar, walaupun “run-parts” adalah sebuah perintah yang akan menjalankan semua script atau program pada direktori yang ditentukan.

Bagian yang paling sulit bagi kebanyakan orang adalah bagian pengaturan waktu. Kolom berikutnya setelah pengaturan waktu adalah kolom user yang menentukan user “run-as“, dan perintah “run-parts” akan menjalankan script pada direktori yang ditentukan. Ingat bahwa direktori tersebut dinamai sesuai dengan interval waktu yang sesuai untuk menjalankan direktori tersebut. Kita bisa meletakkan script pada direktori yang kita inginkan, sehingga script tersebut akan dijalankan pada waktu yang telah ditentukan pada bagian pengaturan waktu. Namun sebenarnya hal ini bukanlah ide yang bagus, sebab kita bisa saja lupa bahwa ada script di dalam direktori tersebut. Sebaiknya kita mengedit file crontab dan mengisikan tugas-tugas cron kita sendiri, karena dengan cara ini akan lebih mudah untuk mendapatkan daftar tugas-tugas cron dan melakukan pengaturan lebih lanjut melalui crontab. Ingat bahwa ini adalah file crontab milik sistem, yang digunakan untuk menjalankan script dan program untuk maintenance sistem. Sebuah file crontab milik user akan sedikit berbeda, jadi sebaiknya anda tidak menyalinnya.

Dasar-dasar Crontab

Terdapat dua buah file yang menentukan user mana yang bisa menggunakan crontab: /etc/cron.allow dan /etc/cron.deny. Biasanya, hanya ada file cron.deny pada sistem, dan jika file ini ada, dan terdapat nama user di dalamnya (satu user per baris), maka user tersebut tidak diperbolehkan menggunakan perintah crontab. Jika terdapat file cron.allow, maka hanya user yang namanya terdapat pada file ini yang diperbolehkan menggunakan perintah crontab.

Pada file crontab, terdapat enam field untuk setiap entry, dan masing-masing field dipisahkan oleh spasi atau tab.

  • Lima field pertama menentukan kapan perintah akan dijalankan.
  • Field ke-enam adalah perintah yang akan dijalankan.
Minute - 0-59.
 Hour - 0-23 24-hour format.
 Day - 1-31 Day of the month.
 Month - 1-12 Month of the year.
 Weekday - 0-6 Day of the week. 0 refers to Sunday.

Pada file crontab, akan tampak seperti ini:

# min(0-59) hours(0-23) day(1-31) month(1-12) dow(0-6) command
 34 2 * * * sh /root/backup.sh

Pada contoh tersebut, perintah “sh /root/backup.sh” akan dijalankan pada jam 2:34 AM setiap hari.

Tanda bintang pada contoh tersebut berarti ‘semua waktu‘. Tanda bintang pada kolom ‘menit’ berarti “jalankan setiap menit”.

Percobaan

Sekarang mari kita mencoba membuat sebuah tugas untuk cron. Perintah yang harus kita jalankan adalah crontab -e, yang akan membuka teks editor vi untuk melakukan pengaturan tugas-tugas cron.

[root@localhost ~]# crontab -e

sekarang masukan baris berikut ini:

crontab: installing new crontab
[root@localhost ~]#

Dalam beberapa saat, anda akan melihat pesan berikut ini:

Broadcast message from root (Thu Apr 3 14:52:01 2008):

Hello From Crontab

Pesan ini akan muncul setiap menit, karena kita meletakkan tanda bintang pada semua field waktu. Jika kita tidak menghapus file crontab ini, maka kita akan mendapatkan pesan ini setiap menit selama hidup kita. Hal ini sekaligus menunjukkan apa akibatnya jika kita melakukan suatu kesalahan dengan crontab. Kita harus menjalankan perintah crontab -r untuk menghapus entry di atas.

[root@localhost ~]# crontab -r

Misalkan di masa mendatang kita harus menjalankan web server Apache httpd, cron juga bisa diandalkan. Pertama, kita akan mengecek apakah httpd sedang tidak berjalan. Lalu, kita jalankan perintah date untuk mendapatkan waktu saat ini, sehingga kita bisa mengatur crontab untuk menjalankannya di masa datang.

[root@localhost ~]# service httpd status
httpd is stopped
[root@localhost ~]#
[root@localhost ~]# date
Thu Apr 3 15:45:32 MST 2008
[root@localhost ~]#

Kita dapat dengan mudah menghitung waktu 10 menit dari sekarang. Jalankan perintah crontab -e, dan tulislah file crontab dengan mengingat format waktunya.

# min(0-59) hours(0-23) day(1-31) month(1-12) dow(0-6) command
 55 15 * * * /sbin/service httpd start

Gunakan saja tanda bintang untuk hari, bulan dan hari dalam seminggu, dan gunakan satu spasi saja, sebab beberapa distribusi Linux tidak mengijinkan anda menggunakan lebih dari satu spasi.

55 15 * * * /sbin/service httpd start
[root@localhost ~]# crontab -e
crontab: Installing new crontab

Jika anda melakukan kesalahan, crontab akan memberitahu anda saat anda menutup editor. Dengan asumsi tidak ada kesalahan, web server Apache akan berjalan kurang dari sepuluh menit dari sekarang. Anda bisa menggunakan perintah crontab -l untuk melihat daftar tugas-tugas dalam file crontab.

2 thoughts on “Penggunaan Crontab

  1. wah hebat euy skr kang .. terus menulis kang untuk share ilmu nya … semangat

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s