Модераторы: powerfox, ZeeLax
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Отслеживание изменений в файлах и каталогах 
V
    Опции темы
Imple
Дата 11.10.2007, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1546
Регистрация: 14.9.2007
Где: Алма-Ата

Репутация: 18
Всего: 87



Отслеживание изменений в файлах и каталогах

Нередко появляется необходимость выполнить какое-либо действие при изменении произвольноко файла или каталога. Это может быть очень полезно во многих случаях, например:
  •  Автоматическая проверка на вирусы входящих файлов;
  •  Отслеживание изменений корпоративной информации;
  •  Отслеживане изменений логов приложений на "лету";
  •  Автоматический бэкап критической информации при изменении;
  •  Отладка стороннего ПО
Продолжать список можно бесконечно. К примеру, я недавно столкнулся с необходимостью получать из лога програмного PBX информацию о совершенных звонках и помещать их в БД MySQL. Как это сделать? Первое что пришло на ум - раз в n минут проверять файл на наличие изменений, но нашлось более "правильное" решение. 

Inotify - система отслеживания изменений файлов, предоставляемая ядром Linux в замен устаревшей системы dnotify, начиная с версии 2.6.13. К примеру, ее активно использует Beagle - система поиска для Linux. С помощью inotify, можно отслеживать следующие события:
  •  Создание файла;
  •  Удаление файла;
  •  Обращение к файлу;
  •  Изменение файла;
  •  Изменение атрибутов файла;
  •  Открытие или закрытие файла;
  •  Перемещение или переименование файла
Чтобы иметь возможность воспользоваться всем этим, необходимо удостовериться что включена соответсвующая опция в ядре:

Код

File Systems
\--- Inotify file change notification support
     \ --- Inotify support for userspace


Если опция была отключена, необходимо собрать и переустановить ядро, но это тема для отдельной статьи smile

Использовать систему можно через Inotify API, подробности о которой можно узнать вызвав соответствующию man-страницу
Код

man 7 inotify


Либо, что гораздо проще, использовать пакет inotify-tools, последнию версию которого можно получить с http://inotify-tools.sourceforge.net/

Использование inotify-tools

Пакет состоит из двух консольных утилит:

inotifywait - ждет указанных событий над определенным файлом, и завершается при их удовлетворении. Удобно для использования внутри shell-скриптов.
inotifywatch - мониторит определенные события над указаными файлами определенное время, затем выводит статистику по действиям, которые ОС совершала с данным файлом. Это может быть очень полезно при отладке различного ПО.

Более подробную информацию по данным утилитам, вы можете получить обратившись к соответствующим man-страницам:
Код

man inotifywait
man inotifywatch


Простой пример, выводящий сообщение при появлении в /var/log/messages слова "error":
Код

#!/bin/sh
while inotifywait -e modify /var/log/messages; do
  if tail -n1 /var/log/messages | grep error; then
    kdialog --msgbox "Some error occured!"
  fi
done


Другой пример использования inotifywatch - сканирование каталога на наличе вирусов при появлении в нем новых файлов:
Код

#!/bin/sh
while inotifywait -e create /home/ftp/incoming; do
  clamscan /home/ftp/incoming
done


Возможности использования данной системы безграничны, особенно если работать с ней на прямую через Inotify API.
Для любителей языков Perl и Python есть модули Linux::Inotify и python-inotify соответсвенно.

Это сообщение отредактировал(а) Imple - 15.10.2007, 06:39


--------------------
Не шалю, никого не трогаю, починяю сервер.
PM WWW ICQ Skype GTalk Jabber   Вверх
JackYF
Дата 11.10.2007, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 1
Всего: 162



Отличная статья, самому не раз нужно было делать подобные вещи.  smile 


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
spin2
Дата 14.10.2007, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 15.12.2005
Где: Москва-Одесса

Репутация: 2
Всего: 31



Еще есть tripwire.


--------------------
"С кем тяжело молчать, с тем не о чем говорить" (Метерлинк)
блог
Все об ICQ-ботах
PM MAIL WWW ICQ Skype Jabber   Вверх
ZeeLax
Дата 15.10.2007, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 4388
Регистрация: 20.8.2006
Где: Алма-Ата

Репутация: 7
Всего: 88



spin2, у tripware другая цель.


--------------------
Utility is when you have one telephone, luxury is when you have two, opulence is when you have three — and paradise is when you have none.
— Doug Larson
PM MAIL WWW ICQ Skype Jabber   Вверх
bilbobagginz
Дата 19.10.2007, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 34
Всего: 317



спасибо, Imple ;-)
+1



--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Администрирование"
ZeeLax
Imple
nerezus
Этот форум предназначен для решения вопросов по администрации *n?x-систем, в частности по настройке сложных сетей и обслуживанию серверного оборудования.

  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Администрирование *NIX систем | Следующая тема »


 




[ Время генерации скрипта: 0.0827 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.