← Back to team overview

sslug-teknik team mailing list archive

Re: Folder trigger!

 

On Sun, 17 Apr 2005 23:43:21 +0200
Nis wrote:

> Kunne bruge md5sum på foldernavn/*, men problemet er at det virker kun 
> så længe der er mindste en fil i folderen og det er ikke altid tilfældet!

Hvis det er nok at vide om der er kommet filer til (eller fra) i
et directory kan man fx. tage tiden for sidste modify af
directory med stat (eller ls, som dog ikke kan svare på sekunder).

stat -c %Y /mine/jobs  # giver tallet i sekunder, nemmere i scripts.

Her kan selve filerne imidlertid blive appended til uden at stat
på directoryet opdager det.

Ellers, hvis ikke md5sum /my/dir/* må give fejl, så kan du jo
undersøge inden du kører den, om der er nogle filer; det kan du
gøre på mange måder, her er en:

ls /my/dir/* > /dev/null 2>&1 || echo "No files in /my/dir"

Det er egentlig en utilfredsstillende måde, men det trods alt ikke
så slemt, ls vil ofte være i RAM.

Jeg sad og legede med opgaven og prøvede fx.:

MINSUM=$(md5sum /my/dir/* 2>|| echo 123456)

Den giver tallet 123456 hvis der ikke er noget i dir. Men ellers
giver den en string med alle md5summerne, og det er vel ikke så
godt? Så skal man tage md5summen af string for at sammenligne
med forrige (i et hug:)

if test $OLDSUM = \
   $( (md5sum /my/dir/* 2>|| echo 123456)  | md5sum )
then
   echo "No changes"
else
   echo "Some changes"
fi



Jeg har lavet et tool (ydir) som beregner summen af checksum for
et dir-træ, den kunne god modificeres, så den kun spytter selve
tallet ud, hvilket ville være godt i scripts.

Men endnu en ting kan bruges i programmerede løsninger: I de nye
kerner er der en speciel funktion for "billig" overvågning af
filer (systemet skal jo vide om fx. /etc/nsswitch.conf bliver
rettet). Man installerer et signalhandler, og når den bliver kaldt
(af kernen) så har man fået ændret en fil. Det er den billigste
måde at monitorere en fil.


Virker det skræmmende at der er så mange løsninger? Så vælg den,
du synes er mest ligetil (fx. ls dir/* , og smid output væk, brug
kun statuskoden).

Hilsen
-- 
donald_j_axel donax snabela get2net.dk -- http://d-axel.dk/


Follow ups

References