Skrypt sprawdzający zmiany w pliku tekstowym

Witam! Chciałbym stworzyć skrypt sprawdzający co określony czas zmiany w pliku tekstowym i wysyłający powiadomienie na maila jeśli zmiany w tym pliku nastapily (system OpenBSD). Wolałbym nie używać crona i incrona. Myślę, że mimo mojej ubogiej wiedzy z drugą częścią skryptu sobie poradzę, gorzej ze sprawdzeniem zmian w pliku. Napiszę część skryptu, z którą myślę że sobie poradzę do sprawdzenia i proszę o pomoc z resztą.

if []
then
    sleep 300
    /lokalizacjaskryptu/nazwaskryptu.sh
else
    mail -s "zmodyfikowano plik nazwapliku" mojmail@gmail.com
fi

 

Wylicz sumę kontrolną i porównuj, albo sprawdzaj diffem.

Nie znam się na systemach BSD i standardach POSIX/SUS, ale w OpenSUSE i innych Linuksach jest polecenie cmp, które porównuje plik bajt po bajcie.

to zainstaluj sobie cmp, co za problem?

Gdzieś napisał, że ma z tym problem? Jeszcze nie zdążył nawet odpowiedzieć. ‘Rilaks’, niedziela :wink:

Dzięki za odpowiedzi:) Do porównywania zawartości plików tekstowych będę używał diffa. Cmp (opcje -l i -s)jest w OpenBSD mocno ograniczone,  dlatego jeszcze dopytam: jest jakiś sposób, by porównać dwa pliki, by były wykryte wszystkie zmiany, takie jak uprawnienia do wykonywania (poza porównywaniem sum kontrolnych).

 Co do cmp to próbowałem “-s”; “-l”; “file1 file2”; $file1 $file2 i niestety pokazuje błędnie przy zmianie uprawnień do wykonywania.

a może po prostu porównywać datę zmodyfikowania pliku?

Jak nie da rady inaczej, to będę z tego korzystał, ale dobrze byłoby porównywać pliki całościowo.

to najlepiej kombinacja sumy md5 i daty modyfikacji bo zmiana uprawień do pliku nie zmienia zawartości pliku.

grep -v -f plik1 plik2
grep -v -f plik2 plik1