Cron tab ile otomatik server yükünü kontrol ve reboot scripti

0
Onaylı Üye
Üye
Katılım
4 Temmuz 2005
Mesajlar
250
Tepki puanı
0
Selam,
kendi vps sunucum için amatörce yazdıgım bi scripti burda paylaşayım, ilki bellegin aşırı yüklenmesini kontrol ediyor, bende 1024 bellek var 900'ü kullanımda olunca vps yeniden başlatılıyor ve bellek her 12 dakikada bir cronile kontrol ediliyor. Bu arada kullandıgım linux debian 5 lenny.
cron kodu:
*/12 * * * * root sh /crash.sh
ben scripte crash.sh adını verdim kod aşagıda:
#!/bin/bash
tarih=`date +%d.%m.%Y`
saat=`date +%H:%M`
#SSH="/usr/bin/ssh"
#PING="/bin/ping"
#NOW="$(date)"
#_CMD=`$SSH root@localhost`
_CMD=``
#rhostname=`$($_CMD hostname)`
ml=2
rload="$($_CMD uptime |awk -F'average:' '{ print $2}')"
ms="$(echo $rload | sed s/,//g | awk '{ print $2}')"

#denetim=`($_CMD $rload | sed s/,//g | awk '{ print $2}')`
memory="$(free -m | grep Mem: | awk '{print $3}')"
if [ $memory -ge 900 ] ; then

/sbin/shutdown -r now


else
clear


fi
exit
-----------------------------------------------------------------
Diger scriptte bunun benzeri sadece cpu yükünü 15 dakikada bir kontrol ediyor aşırı olursa sistem yeniden başlatılıyor.
cron kodu:
*/15 * * * * root sh /test.sh

Script kodu ben bunada test.sh adını verdim:
#!/bin/bash
tarih=`date +%d.%m.%Y`
saat=`date +%H:%M`
#SSH="/usr/bin/ssh"
#PING="/bin/ping"
#NOW="$(date)"
#_CMD=`$SSH root@localhost`
_CMD=``
#rhostname=`$($_CMD hostname)`
ml=2
rload="$($_CMD uptime |awk -F'average:' '{ print $2}')"
ms="$(echo $rload | sed s/,//g | awk '{ print $2}')"
let "denetim=mp*100"
#denetim=`($_CMD $rload | sed s/,//g | awk '{ print $2}')`
memory="$(free -m | grep Mem: | awk '{print $3}')"
if [ $denetim -ge 20 ] ; then

shutdown -r now


else
clear

if [ $denetim -lt 20 ] ; then



clear


else
clear
fi
fi
exit

--------------------------------------------------
Bu arada kodlarda silmedigim ve gereksiz bölümler var tarih gibi, bunları sistem yeniden başlatıldıgında size mail atması ve burda tarih ve saat belirtmesi için kodlara eklemiştim ancak mail gönderme olayını çalıştıramadıgım için kodlardan onuda silmedim ilerde yaparım diye
ama denemek isteyen arkadaşlarım olursa scriptteki :
/sbin/shutdown -r now
bölümünü
/sbin/shutdown -r now | mail -s "Web Sunucusu $tarih saat $saat 'de calismiyordu, yeniden baslattim" [email protected]
ile degiştirsinler.
--------------------------------------------------

Ben ihtiyacım oldugu için bu kodları derledim deneme yanılmayla yazdım yani branşım bu degil,burda bu işten anlayan arkadaşlar bunu dahada geliştirir yada eksikliklerini bizimle paylaşırsa sevinirim, umarım birilerinin işine yarar...
 
0
Onaylı Üye
Üye
Katılım
15 Nisan 2005
Mesajlar
1,741
Tepki puanı
29
Konum
Live in .NET
Sistemi yeniden başlatmak yerine asıl yükü oluşturan ilgili servisi yeniden başlatmanız daha doğru olur kanısındayım.
 
0
Onaylı Üye
Üye
Katılım
4 Temmuz 2005
Mesajlar
250
Tepki puanı
0
evet haklısınız aslında bunun temel nedeni benim sunucu özelliklerimle ilgili, web sunucum lighttpd bu sunucu bazen restart edildiginde kilitlenebiliyor yada çalışmıyor,kill ile kapatmak gerekiyordu, yukardaki script aslında daha komplikeydi, önce mysql yeniden başlatılır -en çok yükü çeken o oluyor :( - çalışıp çalışmadıgı kontrol edilir, ardından lighttpd yeniden başlatışır çalışıp çalışmadıgı kontrol edilir, çalışması 5 kez kontrol edilir çaılşmazsa restart edilir şeklindeydi, ancak bu eski vps imdeydi yedegimde yoktu vps aldıgım adam paraları alıp kaçınca tüm kodlarım gitti :( tekrar ugraşmak istemedigimden elimdeki taslaklarımı bu şekilde basit hale getirdim,Şu anki kodlarda benim sistemde her restartta 10 sn kadar kayıp oluyor bu arada onuda söyliyim.
 
Geri
Üst