Di Linux, kita dapat menentukan kapan suatu
tugas atau program di-eksekusi. Pengaturan waktu atau penjadwalan
ini dapat berlangsung secara berulang maupun sesaat (hanya sekali eksekusi)
di waktu yang akan datang. Contoh jadwal yang berulang, kita memerintahkan
komputer untuk mengambil email setiap 30 menit, setiap hari. Contoh penjadwalan
sesaat, komputer akan mengambil email besok siang pada jam 13.00. Bagaimana
caranya? Dalam artikel ini, saya akan menjelaskan cara penggunaan cron
untuk mengatur jadwal berulang dan at untuk jadwal sesaat.
cron
cron dapat diaktifkan agar jalan saat Linux dinyalakan (boot) melalui
ntsysv atau manual melalui terminal. Contoh cara mengaktifkan pada RedHat:
# /etc/rc.d/init.d/crond start
cron merupakan program daemon yang setiap menit men-cek apakah ada perintah
yang mesti dijalankan. Daftar atau tabel cron (crontab), yaitu file yang
berisi jadwal perintah, ada di direktori spool (misalnya /var/spool/cron/).
Nama file itu sama dengan nama user pemilik atau pembuat jadwal. Untuk
membuat atau mengedit crontab, user dapat menggunakan program yang juga
bernama crontab. Secara default, crontab akan menjalankan editor yang dijadikan
standar, biasanya vi. Sebagai root, kita dapat mengedit langsung file crontab
yang ada di direktori spool cron (/var/spool/cron/nama_user) atau menggunakan
program bantu Linuxconf (khusus RedHat dan turunannya).
Ada 3 option dalam menjalankan crontab sebagai user biasa:
$ crontab -e (artinya mengedit atau membuat baru tabel cron atau daftar
tugas).
$ crontab -l (artinya menampilkan daftar tugas yang telah ada).
$ crontab -r (artinya menghapus daftar tugas yang ada).
Sebagai root, kita dapat mengedit, melihat atau menghapus crontab user
dengan tambahan option -u, misalnya:
# crontab -eu rus (artinya mengedit crontab yang dimilki user rus).
Format crontab
Sebuah crontab merupakan daftar program yang akan dijalankan secara
berulang melalui terminal atau command line, lengkap dengan waktu kapan
program tersebut dijalankan. Setiap program dijadwalkan dalam satu
baris dengan makna sebagai berikut:
menit jam tanggal bulan hari
Contoh crontab di bawah ini akan menjalankan fetchmail setiap menit
(*), setiap jam (*), setiap hari/tanggal (*), setiap bulan (*) dan
setiap hari dalam seminggu (*).
* * * * * fetchmail
Contoh berikut ini, fetchmail hanya dijalankan setiap (interval) 5
menit (*/5), antara jam 8 pagi hingga jam 5 sore (8-17), setiap hari Senin
hingga Jumat (1-5).
*/5 8-17 * * 1-5 fetchmail
Nama (case sensitive) juga dapat digunakan untuk crontab, misalnya
sun-sat (artinya Minggu hingga Jumat), jan-dec (Januari - Desember).
Izin Menggunakan crontab
Ada 2 file yang berfungsi mengatur pemberian izin penggunaan crontab,
yaitu /etc/cron.allow dan /etc/cron.deny. Yang dicek pertama adalah
cron.allow, yaitu daftar user yang diizinkan menggunakan crontab. User
selain yang terdaftar di cron.allow tidak boleh menggunakan crontab. Bila
cron.allow tidak ada, cron.deny akan dibaca. User selain yang terdaftar
di cron.deny diizinkan menggunakan crontab. Jika kedua file tidak
ada, semua user dapat menggunakan crontab.
at
Perintah (command) at digunakan untuk membuat jadwal eksekusi sebuah
atau lebih program di waktu yang akan datang. Ada 4 perintah yang terkait
dengan at, yaitu:
1. at, artinya jalankan perintah atau program pada watu yang
ditentukan.
2. atq, artinya list atau tampilkan daftar perintah yang akan dijalankan.
3. atrm, artinya batalkan perintah yang telah dijadwal.
4. batch, artinya jalankan perintah jika tingkat beban sistem memungkinkan.
Sebelum menjalankan at, daemon at (atd) harus dijalankan, misalnya
di RedHat dengan perintah sebagai berikut:
# /etc/rc.d/init.d/atd start
Contoh penulisan peintah at:
# at now + 2 minutes
at> fetchmail
at> <EOT>
Catatan: <EOT> merupakan hasil penekanan tombol <Ctrl> <D>
atau ^D. Gambar-1 memperlihatkan tampilan ketika menjalankan perintah at
tersebut, yang maksudnya adalah program fetchmail akan dijalankan 2 menit
setelah menajalankan at ini.
Bentuk umum perintah at adalah:
at [-V] [-q <queue>] [-f <file>] [-mld] <TIME>
queue diganti dengan nama antrian, file adalah nama file yang berisi
daftar perintah yang akan dijalankan, dam TIME adalah spesifikasi
waku yang akan dijelaskan kemudian. -m artinya mengirim email kepada user
yang menjalankan at, -l artinya list (sama dengan atq), dan -d artinya
delete (sama dengan atrm).
Spesifikasi Waktu
Selain now (sekarang), waktu juga dapat dinyatakan dengan today (hari
ini), tomorrow (hari esok), 4am (jam 4 pagi), 4pm (jam 4 sore), dll.
Penulisan waktu ini dapat secara mutlak atau relatif. Contoh, jika
saat ini hari Senin, tanggal 16 April 2001, dan kita ingin menjalankan
sebuah program pada pukul 4 sore pada hari Kamis atau 3 hari kemudian,
ada 2 cara menuliskan perintah:
at 4pm + 3 days
atau
at 4pm April 19
Izin Menjalankan at
Seperti cron, at juga dikontrol oleh 2 file, /etc/at.deny dan /etc/at.allow.
/etc/at.allow akan dicek lebih dulu. Jika ada, hanya user yang tercatat
di at.allow yang diizinkan menggunakan at. Jika /etc/at.allow tidak
ada, /etc/at.deny akan dicek. Semua user yang tidak tercantum di dalam
at.deny dapat menjalankan at. Kebalikan dari cron, jika kedua file tidak
ada, hanya superuser (root) yang diizinkan menggunakan at.
Oleh Rusmanto <rusmanto@elektroindonesia.com>