[ west_herc @ 09.07.2008. 14:04 ] @
| Budući da sma početnik na linux-u zanima me kakod anapravim neki CRON JOB kako bi se moj proces ako padne mogao sam podići. primjerice ASTERISK (gdje se nalazi taj fajl kojeg moram pokrenuti) /usr/sbin/...
Kako da napišem neki cron job ili neku skriptu.
Pozdrav i hvala! |
[ Miroslav Strugarevic @ 09.07.2008. 16:01 ] @
Napraviš fajl check.sh sa sledećim sadržajem:
Code: #!/bin/bash
if [ -e "/var/run/asterisk.pid" ]
then
echo "Asterisk is OK!"
else
echo "Asterisk is DOWN! Starting UP!"
service asterisk start
fi
Ovako možeš da proveriš da li skripta radi kako treba:
# chmod +x check.sh
# ./check.sh
# service asterisk stop
# ./check.sh
# ps -ef | grep safe_asterisk
# crontab -e
Na kraju dodaš sledeću liniju u crontab:
Code: */1 * * * * /root/check.sh >& /dev/null
Proveri dobro putanje da li se poklapaju sa putanjama kod tebe na sistemu!
[ west_herc @ 09.07.2008. 21:24 ] @
A gdje da spremim taj check.sh file? (vidim dolje gdje spremim, lai zašto root/check.sh >& /dev/null tj što to znači)
i jel liniju u cron tab dodajem sa crontab -e (i trebali je nekkako loadati u sistem) tee, da li bi mogao dobiti neke upute o crontabu.
[ Miroslav Strugarevic @ 09.07.2008. 22:45 ] @
Fajl check.sh mozes nazvati kako god zelis. Drugo mozes da ga snimis na bilo koju lokaciju na sistemu samo to onda moras navesti u crontab-u. Ako ga snimis u /usr/bin ili /bin na primer onda neces morati da unosis punu putanju u crontab vec samo komandu check.sh. Komandom crontab -e dobijas editor u koji uspisujes zeljene postavke za cron. Deo sa >& /dev/null znaci da output skripte check.sh ide u crnu rupu :) tj. da ga ti ne dobijas na ekranu... Ako hoces mozes da redirektujes na primer u >& /var/log/check.log pa da tamo imas zabelezeno kada je skripta restartovala asterisk a kad ne na primer.
[ caiser @ 10.07.2008. 07:12 ] @
A kada steknes malo iskustva sa Linuxom obavezno probaj Monit. Relativno lako se podesava a puno toga donosi. :)
[ west_herc @ 10.07.2008. 09:22 ] @
Ali kako mogu biti siguran da se moja skripta 100% izvršava i drugo jel moram u VAR/LOG/check.log prvo kreirati ovaj file check.log???
Kako biti siguran da će se skripta pokrenuti:
Da napomenem da kada unesem crontab -e onda se moj cron job sprema u "/tmp/crontab.XXXXRqmVGg" 1L, 49C
Jer kada stavim da mi provjerava skriptu svake minute, onda ja ubijem asterisk proces, štopam i on nikad ne podigne asterisk!
[ Miroslav Strugarevic @ 10.07.2008. 11:16 ] @
Sledeće komande pokreni na tvom sistemu i output kopiraj ovde:
# crontab -l
# ls -l /var/run/asterisk.pid
# grep pidfile /etc/init.d/asterisk
Što se tiče kreiranja fajla /var/log/check.log ne moraš ga ručno kreirati. Cron job će sam kreirati tajl fajl pošto ćeš skript pokretati kao root tj. komandu crontab -e ćeš pokrenuti kao root user.
[Ovu poruku je menjao Miroslav Strugarevic dana 10.07.2008. u 12:40 GMT+1]
[ west_herc @ 10.07.2008. 12:39 ] @
Da li evo kako izgleda moj crontab:
1 * * * * /root/check.sh >& /var/log/check.log
I to bi trebalo svake minute da provjerava???
Nakon što ja ubijem tj kill pid (od asteriska) on se nikako ponovno ne podiže dok aja ne upišem ručno ./check.sh
Mislim nije mi jasno, zato pitam zašto neće!
[ Miroslav Strugarevic @ 10.07.2008. 13:10 ] @
Jel čitaš ti šta sam ja napisao?
To što si tu ubacio u cron nije validno. Treba da bude:
Code: */1 * * * * /root/check.sh >& /var/log/check.log
Nije isto što i ovo:
Code: 1 * * * * /root/check.sh >& /var/log/check.log
[ Jbyn4e @ 10.07.2008. 13:21 ] @
Ne cita Miroslave, on bi sve na gotovo, a da ne mora ni mozak da ukljuci.Jedino sto je on napisao JESTE validno, ali ne radi ono sto on hoce (vec u pun sat i minut)
@west_herc uporedi svoju liniju crontab-a sa onom koju ti je napisao Miroslav. NHF, ali ukljuci i mozak i oci, i koristi man komandu.
[ west_herc @ 10.07.2008. 13:35 ] @
Vidio bi ti da ti gori pod nogama :).
[ Jbyn4e @ 10.07.2008. 14:12 ] @
Da ne idemo u offtopic, ali meni UVEK gori pod nogama...
Kad ti gori pod nogama, a ne znas sam da namestis, onda lepo platis nekog da ti to zavrsi. Ovde na forumu nije cilj dobijanje gotovih resenja vec da ljudi nauce nesto.
[ west_herc @ 15.07.2008. 10:33 ] @
Opet ja, nema šanse evo već pet dana pokušavam da pokrenem ovaj cron job i bez uspjeha. Naime sktipta ./check.sh radi savršeno i podiže instancu asteriska, ali to svake minute neide nikako, niti nakon 15 minuta niti nakon bilo kojeg primjera kojeg uzmem iz knjige gdje promijenim poziv skripte.
[ Miroslav Strugarevic @ 15.07.2008. 11:12 ] @
Pogledaj ovde:
# tail -f /var/log/cron
Možeš ovako da napraviš bez cron-a:
Fajl check.sh:
Code:
#!/bin/bash
for ((;;))
do
if [ -e "/var/run/asterisk.pid" ]
then
echo "Asterisk is OK!"
else
echo "Asterisk is DOWN! Starting UP!"
service asterisk start
fi
sleep 1
done
Skriptu pokrećeš ovako:
# nohup ./check.sh &
Ako hoćeš da vidiš šta se dešava sa skriptom:
# tail -f nohup.out
Gornji primer će proveravati stanje servisa na svaki sekund. Ako hoćeš drugo vreme izmeni stavku sleep 10 ako hoćeš da se provera okida na svakih 10 sekundi.
[Ovu poruku je menjao Miroslav Strugarevic dana 15.07.2008. u 12:23 GMT+1]
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|