[+] Jak zap

Potrzebujesz pomocy z C, C++, perl, python, itp.
Graffy
Posty: 2
Rejestracja: 14 października 2010, 13:24

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

Post 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
mlodir
Posty: 30
Rejestracja: 31 maja 2009, 16:45

Post 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.
Graffy
Posty: 2
Rejestracja: 14 października 2010, 13:24

Post 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 :)
ODPOWIEDZ