[ LUGOS ] Skripte?!

Andrej Presern andrejp na luz.fe.uni-lj.si
Sre Feb 18 22:27:04 CET 1998


Metod Kozelj wrote:
> 
> Howdy!
> 
> On Tue, 18 Feb 1997, Benjamin Zeleznik wrote:
> 
> > Sedaj pa zares vprasanje: ali se da z "dokaj preprostim" shell
> > programiranjem doseci, da bi se ta postopek sam izvajal, recimo, vsako
> > minuto, oziroma, se bolje, da bi se ta programcek sprozil sam ob vsaki
> > spremembi datoteke "tabela"?
> 
> En quick&dirty trik: iz crona (v poljubnih intervalih, lahko tudi vsako
> minuto) pozenes skripto (program, ...), ki pogleda, ali je bila datoteka
> spremenjena od zadnjega gledanja. Ce da, potem izvede tvoje prepisovanje,
> ce ne, se pac ne sekira.
> 
> Kako ugotoviti, ali se je datoteka spremenila? V eno drugo datoteko
> shranis datum zadnje spremembe, kakor ga vrne ls:
> 
> $ ls -le <somefile> | awk '{ print $6" "$7" "$8" "$9" "$10 }'
> 
> V skripti, ki jo poganja cron potem primerjas izpis z onim, ki je shranjen
> v datoteki in ce nista enaka ...
> 
> Primer skripte, ki pogleda, ali se je datoteka 'tabela.dat' med tem
> spremenila:
> 
> /\/\/\/\/\
> #!/bin/sh
> #
> STATFILE=datestamp.dat
> TABELA=tabela.dat
> DOSOMETHING="ls -l"
> #
> if [ -r ${STATFILE} ]; then
>     OLDSTAMP=`cat ${STATFILE}`
> else
>     OLDSTAMP="not known"
> fi
> #
> STAMP=`ls -le <somefile> | awk '{ print $6 $7 $8 $9 $10 }'`
> #
> if [ "${STAMP}" != "${OLDSTAMP}" ]; then
>     echo "${STAMP}" > ${STATFILE}
>     ${DOSOMETHING}
> fi
> /\/\/\/\/\/\

Hmm.. ali ne bi bilo lazje in primerneje uporabiti 'make'?

--- Makefile 8<--- snip -----

# Pozeni programzaprocesiranje, ki ponovno naredi file 'output', ce se
# je datoteka 'input.dat' spremenila od zadnjega zagona 'make' - za
# detajle glej 'man make' in 'info make'.
output:	input.dat
	programzaprocesiranje $<

--- eof Makefile 8<--- snip -

Andrej

-- 
Andrej Presern, andrejp na luz.fe.uni-lj.si
PGP public key: http://luna.s-gimsen.lj.edus.si/~andrejp/key.asc





Dodatne informacije o seznamu Starilist