<< No Boundaries >>

 | Home | AboutMe | Article | Gallery | Download | Link | 

Catatan Linux Admin II : Task Scheduling

Written by Toto Harjendro
Tutor : Henry Saptono
Tgl kelas : 23/11/2006


Penjadwalan tugas/job
Contoh :
  • penjadwalan status server
  • penjadwalan update anti virus
  • backup data

Tugas (job) --> Process yang berjalan pd sistem komputer

Tujuan :
  • Otomatisasi tugas (job)
  • Memungkinkan melakukan tugas secara kontinyu atau periodik tanpa terlewatkan

Service --> program yang selalu berjalan terus menerus pada sistem komputer dan biasanya diharapkan running ketika komputer booting. Biasanya jalan di background.
Contoh service task scheduling :
  • at
  • cron
  • anacron

Cara memeriksa program yang berjalan di background dengan "ps axf" dimana yang berupa service pada kolom kedua setelah PID ada lambang "?".

at

Task scheduling dengan cara penjadwalan misalnya dengan menentukan tanggal. Tidak berlaku untuk tugas yang bersifat kontinu. Hanya sekali saja.
Cara memeriksa apakah at jalan :
# service atd status
atau
# /etc/init.d/atd status
contoh hasil keluaran :
atd (pid 1840) is running...
Untuk mengaktifkan service at secara otomatis ketika komputer nyala :
# chkconfig atd on
Contoh penggunaan at :
# at 19:20
at> ping -c 3 192.168.1.1 > /tmp/cekserver
at>

Keluar dengan perintah Ctrl+D. File job akan ditaruh di /var/spool/at. Apabila file job dihapus maka penjadwalan akan hilang. Gunakan program yang tidak membutuhkan interaksi dan karena berjalan di background maka hasil keluaran sebaiknya disimpan ke suatu file.
Contoh penggunaan at dengan penggunaan tanggal :
# at 19:20 11/25/2006
at> ping -c 3 192.168.1.1 > /tmp/cekserver
at>

Program melihat penjadwalan yang telah disetting :
# atq
Untuk mencegah user untuk dapat melakukan penjadwalan dengan :
# vi /etc/at.deny ==> diisi nama user yang dilarang

crond

Task scheduler yang kontinu.
Untuk memeriksa crond sudah nyala :
# service crond status atau # /etc/init.d/crond status
Untuk membuat ketika komputer nyala :
# chkconfig crond on
Lokasi penjadwalan berada pada "/var/spool/cron/". Dimana nama penjadwalan sama dengan nama user yang melakukan penjadwalan.
Program yang digunakan menulis penjadwalan dengan "crontab" penggunaannya :
# crontab -e
Maka muncul text editor vi
Format dari isi penjadwalan cron :
[menit] [jam] [tanggal] [bulan] [hari] program
1-59    1-23   1-31     1-12    1-7 => Hari senin adalah nomor 1
contoh :
15 23 * * * shutdown -h now
Pada menit ke 23 jam 11 malam pada setiap tanggal dan setiap bulan
*/5 * * * * ping -c 3 192.168.1.1 >> /tmp/cekserver
Setiap 5 menit maka akan eksekusi
Kalau program penjadwalan seperti ini dijalankan maka ada kemungkinan file tmp kan membesar maka harus dilakukan log rotate, bisa digunakan tools. Tetapi ada cara lain misalnya dengan menambahkan scheduling :
5 7 * * 1 mv /tmp/cekserver /tmp/cekserver.1
Maka file akan dipindahkan ke file lain dan file yang lain akan ditimpa.
Untuk melihat penjadwalan yang telah dilakukan dengan :
# crontab -l
Untuk menghapus penjadwalan dengan :
# crontab -r
Untuk melarang user yang diperbolehkan dengan memasukan nama user di file "/etc/cron.deny".
Antara /etc/cron.allow dan /etc/cron.deny yang didahulukan adalah cron.allow sehingga apabila ada user di dua file tersebut maka yang dilihat adalah yang allow.

Tugas : Buat Program untuk melakukan pengecekan server secara otomatis
Jawab :
1. Buat program "cekserver.sh" 
Isinya :

a=`ping -c 192.168.1.1|grep "received"| cut -f4 -d " "`
if [[ $a == "3" ]];
then
	echo "Pada `date +%A,' '%d' '%B' '%Y' 'jam' '%H:%M` server nyala"
else if [[ $a == "0" ]];
then  
	echo "Pada `date +%A,' '%d' '%B' '%Y' 'jam' '%H:%M` server mati"
else 
	echo "Pada `date +%A,' '%d' '%B' '%Y' 'jam' '%H:%M` server mengalami masalah koneksi"
fi
fi

2. lakukan perintah : # crontab -e
Isikan :

*/5 * * * * sh /home/toto/cekserver.sh >> /home/toto/server_cek_log
0 0 * * 1 mv /home/toto/server_cek_log /home/toto/server_cek_log_1

Pengembangan tugas: Membuat pengecekan DNS secara otomatis berikut kecepatan koneksinya
Jawab :
1. Buat program "cekdns.sh"
Isinya :
IP_DNS=202.153.10.1
ping -c 3 $IP_DNS > tmp_dns.txt
on=`cat tmp_dns.txt|grep "received"| cut -f4 -d " "`
seqavg =`cat tmp_dns.txt|grep "avg"|cut -f5 -d "/"`
rm -f tmp_dns.txt
if [[ $on == "3" ]];
then
	echo "Pada `date +%D' 'jam' '%H:%M` DNS nyala, koneksi rata2 $seqavg ms"
else if [[ $on == "0" ]];
then  
	echo "Pada `date +%D' 'jam' '%H:%M` DNS mati"
else 
	echo "Pada `date +%D' 'jam' '%H:%M` DNS mengalami masalah koneksi"
fi
fi

2. Kemudian tulis ke dalam cron dengan perintah : # crontab -e
Isinya :

*/5 * * * * sh /home/toto/cekdns.sh >> /home/toto/dns_cek_log
0 0 * * 1 mv /home/toto/dns_cek_log /home/toto/dns_cek_log_1
Silakan kalau ingin tanya-tanya




Advertisement
Keep the Car. Get OpenOffice.org Firefox 2

Developed by Toto Harjendro © 2006