Cron dan Crontab

Ingin menjalankan program terjadwal. Atau jika anda punya file yang diedit setiap waktu, data-data, file-file arsip, dll, yang ingin diarsip (dicopy) ke file lain atau hardisk lain setiap hari, setiap minggu, setiap bulan, dan seterusnya. Linux menyediakan fasilitas perintah ini dengan sangat mudah, dengan Cron dan/atau Crontab.

Cron adalah sebuah daemon yang akan menjalankan sebuah program (linux) pada waktu-waktu yang telah ditentukan. Cron ini dijalankan secara otomatis dari /etc/init.d pada multi-user. Cron juga akan melihat perintah di /etc/crontab. Cron juga akan melihat file di /etc/cron.d

Cron hanya dapat diperintahkan/diprogram melalui Bourne shell (Bash shell). Segala perintah yang tak dikenal oleh Bash tak akan jalan. Jadi gunakan program dengan perintah Bash shell murni agar dapat dieksekusi oleh Cron.

Sedangkan Crontab menunjukkan tabel waktu yang kapan Cron dijalankan. Crontab sendiri berarti Cron table atau tabel waktu untuk Cron. Untuk menjadwal kapan sebuah program dieksekusi, crontab inilah yang kita utak-utik.

Struktur perintah file crontab sebagai berikut:

Menit – Jam –Tgl —Bulan —————Mingguan —–Perintah
(0-59) (0-23) (1-31) (1-12 or Jan-Dec) (0-6 or Sun-Sat) xxxxx

Antara Menit, Jam, Tgl, Bulan, dst harus dipisah dengan spasi. Jarak spasi bebas, tidak harus satu atau dua spasi. Dapat juga dipisahkan dengan Tab.

Contoh:

0 2 12 * 0,6 /usr/bin/find

Contoh di atas akan mengeksekusi “/usr/bin/find” pada hari Ahad dan Sabtu (0,6), setiap bulan (*), tanggal 12 (12), jam 2 AM (2), menit ke 0 (0).

Jika hari Sabtu atau Ahad adalah bukan tanggal 12, maka “/usr/bin/find” tidak akan dieksekusi.

Contoh-contoh lain.

Perintah /command/to/execute akan dieksekusi setiap menit.

* * * * * /command/to/execute

Perintah /command/to/execute akan dieksekusi setiap 5 menit.

0,5,10,15,20,25,30,35,40,45,50,55 * * * * /command/to/execute

(Catatan : dalam beberapa kali pengalaman, perintah dengan koma “,” tidak jalan. Kami tidak tahu sebabnya). Lebih baik pakai ini,

*/5 * * * * /command/to/execute

Perintah */5 adalah kependekan dari 0,5,10,15,20 dst… akan mengeksekusi perintah setiap 5 menit. Maka: */2 akan menjalankan perintah setiap 2 menit, */30 setiap 30 menit, dan seterusnya. Kita juga dapat menggunakan perintah ini untuk jam dengan menempatkan sesuai tempatnya.

Perintah /command/to/execute akan dieksekusi setiap jam 18.00 setiap hari

00 18 * * * /command/to/execute

Perintah /command/to/execute akan dieksekusi hari Minggu jam 2 pagi/malam.

00 02 * * sun /command/to/execute

Praktek.

Semua perintah diprogram melalui Bash shell di Linux. Misal, kita ingin meng-copy dokumen setiap hari jam 8 AM dan 20 AM

$ su -
Password:
# crontab -e

Biasanya akan langsung ke editor teks vi. Tekan “i” untuk memulai mengetik. Berikut perintah di crontab,

00 8,20 * * * /home/nama_mu/Documents/copydate

Sebagaimana catatan di atas, lebih aman pakai perintah ini,

00 8 * * * /home/nama_mu/Documents/copydate
00 20 * * * /home/nama_mu/Documents/copydate

Setelah selesai, tekan ESC. Untuk keluar sambil menyimpan teksnya ketikkan “:wq”. Perintah copydate dibuat dalam bentuk program di shell, seperti di list bawah ini. File “copydate” harus diubah menjadi file executable dengan perintah :

$chmod 744 copydate

Berikut adalah list copydate. Letakkan di directory /home/nama_mu/Documents/

#!/bin/bash
#
date >> sekarang.txt
cp /home/nama_mu/Documents/sekarang.txt /home/nama_mu/Desktop/

Setiap hari setelah jam 8.00 atau 20.00, cek adakah file sekarang.txt di directory /home/nama_mu/Desktop/ . Juga cek isi file sekarang.txt

.

Tambahan,
Jika /etc/cron.allow ada, letakkan perintah-perintah crontab ini di dalamnya agar perintah ini dapat dieksekusi. Sebaliknya jika tidak ada /etc/cron.allow tetapi yang ada adalah /etc/cron.deny, jangan diletakkan di sana karena itu akan mencegah perintah dijalankan.

.

Semoga manfaat.

 

Laporan dari orang awam http://orgawam.wordpress.com