Strona 1 z 1

[+] Jak zapętlić działanie skryptu?

: 12 października 2011, 13:34
autor: Graffy
Witam.

Napisałem sobie mały skrypt, który pracuje jako strażnik (ang. watchdog) dla programu OSCam. Obecnie jest uruchamiany przez crona co minutę, wszystko działa cacy.
Prosiłbym o pomoc w zmodyfikowaniu aby działał w pętli z opóźnieniem:

Kod: Zaznacz cały

sleep 10
Chcę zrezygnować z crona i podpiąć go do autostartu.

Kod: Zaznacz cały

#!/bin/sh
logfile=/tmp/watchdog.log

if [ $(ps -A |grep -v grep |grep -c oscam) -eq 2 ] ; then
if [ $(tail -20 /tmp/oscam.log | grep -c '): timeout (') -gt 1 ]; then
echo `date` "timeout karty, restart OSCam ..." >> $logfile
/usr/bin/ekg query numerGG timeout karty, restart OSCam ...
cp /tmp/oscam.log /usr/log/oscam.timeout.log
sleep 2
#######restart########
/etc/init.d/oscam stop
sleep 1
/usr/bin/killall oscam
rm -f /tmp/oscam.log
rm -f -r /tmp/.oscam
sleep 1
/etc/init.d/oscam start
######################
fi
else
echo `date` "OSCam nie działa, restart ..." >> $logfile
/usr/bin/ekg query numerGG OSCam nie działa, restart ...
cp /tmp/oscam.log /usr/log/oscam.crash.log
sleep 2
########restart#######
/etc/init.d/oscam stop
sleep 1
/usr/bin/killall oscam
rm -f /tmp/oscam.log
rm -f -r /tmp/.oscam
sleep 1
/etc/init.d/oscam start
#####################
fi
exit 0

: 12 października 2011, 14:55
autor: mlodir
Jeżeli ta pętla ma działać bez przerwy, możesz zrobić tak:

Kod: Zaznacz cały

while [ 1 ] ; do
# KOD SKRYPTU
done
Masz jeszcze do wyboru inne pętle (np. for). Generalnie, powinieneś poczytać o bashu.

: 12 października 2011, 15:39
autor: Graffy
No właśnie, próbowałem z "while" i zapętliło mi restart OSCam-a
Dziwne ale teraz po restarcie Debiana - działa?
Tak czy owak - dziękuję za pomoc.

Można zamknąć temat - problem rozwiązał się sam :)