Утилита inotifywait из состава пакета inotify-tools позволяет организовать выполнение
определенного действия в shell скрипте, при изменении, создании, удалении, перемещении и выполнении
других операция с файлами.Выполняем программу при появлении нового файла в директории
inotifywait -e create /home/ftp/incoming --format "%w%f" -q -m| while read file; do
clamscan $file
doneДля отслеживания изменений вместо create можно использовать modify, удаления - delete, перемещения - move и т.п.
URL:
Обсуждается: http://www.opennet.me/tips/info/2149.shtml
На одной консольке делаю
# inotifywait -e modify /tmp --format "%w%f" -q -m | while read file; do clamscan $file; done;на другой
# > /tmp/test
# dd if=/dev/urandom of=/tmp/test count=1024 bs=100clamav проверяет этот файл бесконечно.
Далее:
# dd if=/dev/urandom of=/tmp/test1 count=1024 bs=100
# dd if=/dev/urandom of=/tmp/test2 count=1024 bs=100
# dd if=/dev/urandom of=/tmp/test3 count=1024 bs=100Ни один из выше описаных не проверится, так как безконечный цикл на самом первом.
inotifywait -e create - нормально.
меняется atime на файле при каждой проверке кламом ?
неа! :-|Тока так
x=0; inotifywait -e modify /tmp --format "%w%f" -q -m | while read i; do if [ "$x" -eq 0 ]; then clamscan $i; ((x++)); fi; done;
Забавные результаты:# x=0; inotifywait -e modify /tmp --format "%w%f" -q -m | while read i; do ((x++)); echo "COUNT = $x "; done;
# dd if=/dev/urandom of=/tmp/test count=1 bs=1выдаёт
COUNT = 1
COUNT = 2# dd if=/dev/urandom of=/tmp/test count=1 bs=100
COUNT = 1
COUNT = 2# dd if=/dev/urandom of=/tmp/test count=100 bs=1
COUNT = 1
COUNT = 2
...
...
COUNT = 100
COUNT = 101# dd if=/dev/urandom of=/tmp/test count=100 bs=1
COUNT = 1
COUNT = 2
...
...
COUNT = 33
COUNT = 34
Ну в общем ясно, dd использует write() count раз, а COUNT - это сколько inotifywait успеет поймать, и ждет пока тело while отработает.Так что, лучше наверно использовать inotifywait -e close
ох, лисапедисты... есть же icron(inotify cron)
А еще был SGI FAM.
Есть перловая утила -- iwatch. Мне в ней неудобен конфиг -- в xml файле. На мой взгляд, xml для такого перебор. Начал переписывать под свои нужды, для поддержки самбы.
Почему параметр -d не работает? Или что я не так делаю?