[ LUGOS ] Skripte?!

Metod Kozelj metod.kozelj na rzs-hm.si
Sre Feb 18 19:02:12 CET 1998


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
/\/\/\/\/\/\

V vrstici DOSOMETHING="ls -l" zamenjas tisti "ls -l" z ukazom, ki naj se
izvede, ce je datoteka spremenjena.


Peace!
  Mkx




Dodatne informacije o seznamu Starilist