The OpenNET Project
 
Поиск (ключи):    ПРОГРАММЫ СТАТЬИ СОВЕТЫ ФОРУМ
  WIKI НОВОСТИ (+) MAN'ы ДОКУМЕНТАЦИЯ

Выполнение действия при изменении или создании файла в Linux
Утилита 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 и т.п.
 
28.08.2009
Раздел:    Корень / Программисту и web-разработчику / Shell / Готовые скрипты

Обсуждение [ RSS ]
 
  • 1.1, pavlinux, 20:24, 28/08/2009 [ответить] [смотреть все]
  • +/
    На одной консольке делаю
    # 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 - нормально.

     
     
  • 2.2, vkshlu, 18:16, 29/08/2009 [^] [ответить] [смотреть все]
  • +/
    меняется atime на файле при каждой проверке кламом ?
     
     
  • 3.3, pavlinux, 19:10, 29/08/2009 [^] [ответить] [смотреть все]
  • +/
    неа! :-|

    Тока так


    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

     
  • 1.4, Добрый Дохтур, 21:31, 30/08/2009 [ответить] [смотреть все]
  • +/
    ох, лисапедисты... есть же icron(inotify cron)
     
     
  • 2.5, pavlinux, 15:09, 31/08/2009 [^] [ответить] [смотреть все]
  • +/
    А еще был SGI FAM.
     
  • 1.6, bliss, 23:19, 01/09/2009 [ответить] [смотреть все]  
  • +/
    Есть перловая утила -- iwatch. Мне в ней неудобен конфиг -- в xml файле. На мой взгляд, xml для такого перебор. Начал переписывать под свои нужды, для поддержки самбы.
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:

     Добавить заметку
     Версия для печати
     
     Поиск заметки:
     

    Последние заметки
    - 05.02 Проброс 802.1q/access порта в Linux через IP-сеть
    - 25.01 Использование systemtap для устранения уязвимости в реализации /proc/pid/mem
    - 24.01 Мониторинг загрузки многоядерного сервера по каждому ядру в отдельности в Linux
    - 23.01 Осуществление ОGSM/SMS/USSD вызовов с использованием утилиты mdbus
    - 13.01 Интерактивный firewall в Linux
    - 08.01 Советы по увеличению автономной работы ноутбука с Debian/Ubuntu
    - 31.12 Бэкап и восстановление данных из БД memcachedb и других хранилищ на базе BerkeleyDB
    - 28.12 Получение инкрементальных diff-файлов для subversion
    - 27.12 Решение проблемы поддержки php-zip-extension в Fedora-16
    - 25.12 Настройка сетевого доступа в окружениях QEMU
    RSS | Следующие 15 записей >>


    АКЦИЯ! ПОДПИШИСЬ на журнал Linux Format до 31 января 2012 года и выиграй СУПЕРПРИЗ!

    Журнал "Linux Format" (Линукс Формат)- Единственный в России и странах СНГ журнал на русском языке, посвящённый Linux и свободному ПО. Журнал для IT-директоров, IT-менеджеров, программистов, системных администраторов, учителей школ и преподавателей ВУЗов и всех пользователей ПК. В каждом выпуске: Новости индустрии OpenSource, обзоры новинок свободного ПО, обучающие и методические статьи.

    Каждый, кто оформит подписку, получает бонус- объёмные наклейки на системный блок и подарки: с одним из первых выпусков журнала в 2012 году- диск с архивом номеров за 2005-2011 г.г. и ежемесячно электронную версию журнала в pdf-формате.

    Подробнее о проведении акции вы можете прочитать на странице сайта.


      Закладки на сайте
      Проследить за страницей
    Created 1996-2012 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    RUNNet TopList