URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 58319
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Выполнение действия при изменении и..."

Отправлено auto_tips , 28-Авг-09 20:24 
Утилита 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


Содержание

Сообщения в этом обсуждении
"Выполнение действия при изменении или создании файла в Linux"
Отправлено pavlinux , 28-Авг-09 20:24 
На одной консольке делаю
# 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=100

clamav проверяет этот файл бесконечно.

Далее:

# 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 - нормально.


"Выполнение действия при изменении или создании файла в Linux"
Отправлено vkshlu , 29-Авг-09 18:16 
меняется atime на файле при каждой проверке кламом ?

"Выполнение действия при изменении или создании файла в Linux"
Отправлено pavlinux , 29-Авг-09 19:10 
неа! :-|

Тока так


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


"Выполнение действия при изменении или создании файла в Linux"
Отправлено Добрый Дохтур , 30-Авг-09 21:31 
ох, лисапедисты... есть же icron(inotify cron)

"Выполнение действия при изменении или создании файла в Linux"
Отправлено pavlinux , 31-Авг-09 15:09 
А еще был SGI FAM.

"Выполнение действия при изменении или создании файла в Linux"
Отправлено bliss , 01-Сен-09 23:19 
Есть перловая утила -- iwatch. Мне в ней неудобен конфиг -- в xml файле. На мой взгляд, xml для такого перебор. Начал переписывать под свои нужды, для поддержки самбы.

"Выполнение действия при изменении или создании файла в Linux"
Отправлено жадный баклажан , 07-Авг-13 16:57 
Почему параметр -d не работает? Или что я не так делаю?