Quando no Linux você pode usar o mecanismo inotify
em combinação com incron
. Setup incron
instalando o pacote e editando a configuração:
/etc/incron.conf
system_table_dir=/etc/incron.d
user_table_dir=/var/spool/incron
allowed_users=/etc/incron.allow
denied_users=/etc/incron.deny
lockfile_dir=/var/run
logfile_name=incrond
editor=vi
Em seguida, configure um relógio em /etc/incron.d/myscriptwatch
:
/path/to/dir IN_CLOSE_WRITE,IN_MOVED_TO /path/to/check_content_script.sh $@ $#
O próximo passo é configurar o /path/to/check_content_script.sh
para verificar o que é feito com o arquivo:
CURRSUM=$(md5sum $@)
PREVSUM=$(cat /path/to/old_saved_sum)
if [ "$CURRSUM" = "$PREVSUM" ]
then
echo "file $@ is not altered" >> /tmp/watch_log
else
echo "file $@ is altered" >> /tmp/watch_log
fi
Você também pode monitorar os outros eventos para ver se o arquivo é alterado como IN_CLOSE_WRITE,IN_ATTRIB,IN_MODIFY
Veja man 5 incrontab
para mais detalhes.