Inotify è un ottimo sistema di notifica, presente dalla versione del Kernel 2.6.13 e sempre più usato nelle varie distro.
Grazie a questo "nuovo" sistema è possibile accorgersi di eventuali modifiche e danni in tempo quasi reale, rispetto invece ai più vecchi sistemi tipo dnotify.
Se poi lo controlliamo con inron il sistema diventa quasi perfetto.
Incron è un programma che prende molto da cron, anche se in verità incron non ha nulla a che vedere con lo scheduling.
Cron infatti svolge azioni periodiche, mentre incron rimane in ascolto e cattura gli eventi di inotify.
Per prima cosa installiamo incron.
Dovrebbe essere presente su tutte le distro; su Archlinux:
# pacman -Sy incron
La tabelle di inrcond sono divise in tre colonne:
- la prima indica il PATH da controllare
- la seconda l'evento da rilevare
- la terza il comando da eseguire quando si scatena l'evento
Per quanto riguarda l'evento da rilevare abbiamo a disposizione un'ampia scelta:
IN_ACCESS -> il file è stato letto
IN_ATTRIB -> cambiamento attributi
IN_CLOSE_WRITE -> file aperto in modifca e poi chiuso
IN_CLOSE_NOWRITE -> file chiuso senza modifiche
IN_CREATE -> file/directory create
IN_DELETE -> file/directory cancellate
IN_DELETE_SELF -> file/directory osservata è stata cancellata
IN_MODIFY -> file modificato
IN_MOVE_SELF -> file/directory spostata o rinominata
IN_MOVED_FROM -> file/directory spostata dalla directory controllata
IN_MOVED_TO -> file/directory spostata nella directory controllata
IN_OPEN -> file aperto
IN_ALL_EVENTS -> qualsiasi evento
Insomma ce ne è per tutti i gusti.
Per controllare gli eventi possiamo usare incrontab (simile a crontab).
Per vedere gli eventi per l'utente corrente:
# incrontab -l
/srv/http IN_CREATE,IN_DELETE logger "ATTENZIONE"
Io ho un solo evento impostato per root.