masodpercenkenti programhivas

Sziasztok,

Van egy szkriptem amit masodpercenkent szeretnek meghivni es daemonkent kellene futnia. A gond az, hogy a cron legkisebb egysege a perc, ami tulsagosan hosszu ido a feladatra. Arra gondoltam, hogy meghivom watch-csal masodpercenkent, a kimenetet elkuldom a /dev/null-ba. Ez szepen megy konzolbol, ill. daemonkent is, az apro bokkeno vele, ha beteszem az inditoszkriptbe, akkor az egesz megbolondul, figyelmen kivul hagyja a /dev/null atiranyitast, lemeszeli feketere a kepernyot es nem engedi tovabb az init-et.

Valami ilyesmi a szkript hivasa:
watch -n1 -t '/root/bin/check_it' > /dev/null

A kerdesem az lenne, hogy volna-e valamilyen intelligensebb megoldas ami kepes lenne masodpercenkent hivni a szkriptet, vagy esetleg en rontottam el valamit a fentiben?

Koszi elore is :-)

Hozzászólások

az init scriptben a watch sor elotti sorba egy sleep 120 ?

a scriptben egy while, ami sleep-el másodpercenként?

while 1
do
valami
meg még valami
sleep 1
done

???

Ugyanaz de igy van benne egy kis exit status-okkal kapcsolatos perverzio:)

while sleep 1; do
valami
done

Persze most elbizonytalanodtam az `1' miert ad 0-as exit statust...

$ while 1; do echo igen; done
ksh: 1: not found

akkor megsem ugyanaz

====================
`Have some wine,' the March Hare said in an encouraging tone.
Alice looked all round the table, but there was nothing on it but tea.

Pl. hatterben futtatas (&), stdin atiranyitasa.

Talan a sleep kisebb kvantumokban torteno meghivasa, pl.


sleep 0.1

es a


date +%s

megfelelo hivasa (kiegeszitve a shell $((...)) aritmetikajaval, while [[ ... ]] -val, stb) celravezeto" lehet. legalabbis en ezt webcam kepekhez, 5-10-15 masodperces, de kvazi pontos idozitesekne'l egesz jo hatekonysaggal tudom hasznalni (azaz lehet hogy a webcam 2-3-4 masodpercig is kesziti a ke'pet, attol fuggoen, amit nem tudunk, viszont az _garantalt_ ezaltal, hogy mondjuk egzaktul 10 masodperces periodusokkal keszuljenek a ke'pek).

A masik dolog az atiranyitas: a `>/dev/null` altalaban keve's, a teljes terminalt le kell csatolni:


parancs ... >&/dev/null </dev/null &

Azaz akkor is celszeru levalasztani az stdin-t es az stderr-t (az stdout-on felul), ha nem olvasol be semmit explicite a billentyuzetrol es nem irsz ki semmit sem az hiba-kimenetre. Ui., ashell innen fogja tudni, hogy mind3 megnyitott file-deszkriptort (0, 1, 2) letudhatja, azaz a teljes iranyitast atadhatja a child processznek. Ami nem utolso dolog...

A.