[linux] Skrypt uruchamiajacy program w tle

0

Witam.
Napisalem ostatnio program w c(konsolowy) pod linuxa, ktory sprawdza pewne zeczy w sieci i cos tam sobie robi, wypisuje przy tym sporo linijek w konsoli. Teraz chce aby program uruchamial sie w tle podczas uruchomienia systemu, a jak zakonczy prace to zeby znowu odpalil sie po 2h.
Mozna napisac jakis skrypt w bashu(?) typu:
while(true){
// uruchomienie programu w tle
// sleeep(2 godziny)
}

I jeszcze jedno... aby skrypt jakos poinformowal gdy w programie wyswietlilo by sie cos typu "error" "xyz".
Jak takie cus zrobic?

0
usre4p napisał(a)

Mozna napisac jakis skrypt w bashu(?) typu:
while(true){
// uruchomienie programu w tle
// sleeep(2 godziny)
}

while true ; do
     program > /dev/null 2>&1 &
     sleep 7200
done
usre4p napisał(a)

I jeszcze jedno... aby skrypt jakos poinformowal gdy w programie wyswietlilo by sie cos typu "error" "xyz".
Jak takie cus zrobic?

Hmmm....

while true ; do
     rm -f plik_z_errorami
     program > /dev/null 2>plik_z_errorami &
     sleep 7200
     if [ -s plik_z_errorami ] ; then
         ojej babol
     fi
done

Ale cron jest lepszym rozwiązaniem: prawidłowo przechwyci stderr i kod powrotu i wyśle komunika o błędzie na maila.

0

Ten cron ma jakis chyba uraz......
Zsobilem skrypcik /root/prog/prog.sh

#!/bin/bash
echo "START=====`uptime`" >> "/root/prog/raport.txt"
/root/prog/prog >> "/root/prog/raport.txt"
echo "END=======`uptime`" >> "/root/prog/raport.txt"

W pliku /var/spool/cron/crontabs/root dodalem linijke:

* */4 * * * /root/prog/prog.sh

Zrobilem restart, niby wszystko dziala ok, ps aux | grep prog - faktycznie wszystko ok, ale po chwili uruchamiaja sie jeszcze raz i znowu i znowu w rezultacie mam kilka procesow tego samego programu - tragedia.

Fragment raportu(program nie zwrocil zadnych danych, bo go szybko wylaczlem-program normalnie dziala ok 30-50min)
START===== 20:29:01 up 13 min,  1 user,  load average: 0.00, 0.06, 0.12
END======= 20:33:44 up 18 min,  1 user,  load average: 0.00, 0.02, 0.08
END======= 20:33:44 up 18 min,  1 user,  load average: 0.00, 0.02, 0.08
START===== 20:34:01 up 18 min,  1 user,  load average: 0.00, 0.02, 0.07
END======= 20:34:01 up 18 min,  1 user,  load average: 0.00, 0.02, 0.07
START===== 20:35:01 up 19 min,  1 user,  load average: 0.00, 0.01, 0.07
END======= 20:35:01 up 19 min,  1 user,  load average: 0.00, 0.01, 0.07
START===== 20:36:01 up 20 min,  1 user,  load average: 0.08, 0.02, 0.07
START===== 20:40:01 up 24 min,  1 user,  load average: 0.00, 0.00, 0.04
END======= 20:41:45 up 26 min,  1 user,  load average: 0.00, 0.00, 0.03
END======= 20:41:45 up 26 min,  1 user,  load average: 0.00, 0.00, 0.03
START===== 20:42:01 up 26 min,  1 user,  load average: 0.00, 0.00, 0.03
END======= 20:42:48 up 27 min,  1 user,  load average: 0.00, 0.00, 0.03

szybko wylaczylem killall prog i zablokowalem mozliwosc wykonywania skryptu uruchamiajacego(-x).
Co jest nie tak? program ma sie uruchamiac co 4h a dziala.... dziwnie

0

Dałem:

50 */4 * * * /root/prog/prog.sh

I śmiga :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1