[ 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