[ 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]