1. Вы находитесь в архивной версии форума xaker.name. Здесь собраны темы с 2007 по 2012 год, большинство инструкций и мануалов уже неактуальны.
    Скрыть объявление

Inotify-tools: осуществляем мониторинг изменении файловой системы в Linux

Тема в разделе "FAQ", создана пользователем Jason Bourne, 31 мар 2012.

  1. Jason Bourne

    Jason Bourne [email protected]:~# Модератор

    Регистрация:
    28 ноя 2009
    Сообщения:
    0
    Симпатии:
    96
    Баллы:
    0
    Inotify-tools: осуществляем мониторинг изменении файловой системы в Linux

    Linux — гибкая операционная система, которая вооружает пользователя широкими возможностями. Вот, например, нам необходимо осуществить мониторинг изменения файловой системы. Для этого в Linux появился отличный инструментарий, да ещё, ориентированный на консоль. О нем и пойдет речь далее.

    Inotify — подсистема ядра

    Inotify — это подсистема ядра Linux, которая отслеживает изменения файловой системы в Linux (открытие, чтение, создание, удаление, перемещение, изменение атрибутов и др.). Впервые данная подсистема появилась в релизе ядра 2.6.13. Другими словами, подсистема позволяет получить информацию о действиях, которые были осуществлены с любым интересующим вас файлом.

    Inotify-tools: знакомство и установка

    Inotify-tools — это набор утилит, которые посредством командной строки позволяют работать с подсистемой Inotify. Кроме того, составной часть проекта Inotify-tools является соответствующая библиотека — libinotifytools, которая позволяет с легкостью задействовать интерфейс, предоставляемый подсистемой Inotify.

    Мы будем использовать операционную систему Ubuntu 11.10. Установка Inotify-tools в ней не займёт много времени. Что касается других дистрибутивов (последних версий), то рассматриваемый пакет утилит доступен из репозиториев для openSUSE 12.1, Debian 6.x, Arch и других.

    Запустите терминал или перейдите в консоль, а затем дайте команду:

    Код:
    $ sudo apt-get install inotify-tools
    Кстати, если вы обратите внимание, то увидите, что, помимо inotify-tools будет установлен пакет — libinotifytools0. Это та самая библиотека, о которой мы говорили выше, и которая необходима для работы inotify-tools.

    Работаем с Inotify-tools

    В пакет inotify-tools входят следующие утилиты: inotifywatch и inotifywait. inotifywatch — эта утилита, которая дает представление о том, какую информацию можно получить с помощью подсистемы Inotify, а также осуществляет сбор статистической информации о соответствующих событиях файловой системы (открытие файлов, удаление и т. д. - далее, в этом контексте будут иметься ввиду события Inotify).

    Рассмотрим на примерах, как это работает. Откройте терминал и дайте команду:

    Код:
    $ inotifywatch -r ~
    После чего вы увидите на экране примерно следующее (см. рис. 1)

    [​IMG]
    Рисунок 1. inotifywatch в процессе работы

    Это означает, что inotifywatch успешно запущен и осуществляет рекурсивный (опция "-r") сбор информации о действиях с файловой системой в домашнем каталоге текущего пользователя. Например, запустим браузер Mozilla Firefox и закроем его. Далее нажмём в терминале "Ctrl"+"C", чтобы остановить inotifywatch. В итоге мы увидим примерно следующее (см. рис. 2, для увеличения щелкните по рисунку мышкой).

    [+] Рисунок 2
    [​IMG]
    [свернуть]

    Рисунок. 2. Вывод Inotifywatch

    В этом выводе вы можете увидеть к каким файлам обращался Mozilla Firefox во время своей работы.

    При помощи опции "-e" можно добиться более гибкого вывода информации от inotifywatch. Так, например, нам необходимо узнать какие файлы или каталоги во время своей работы открывает Mozilla Firefox. Дадим следующую команду:

    Код:
    $ inotifywatch -r -e open ~
    После этого, запустим Mozilla Firefox, поработаем в нем, а затем закроем. Далее остановим в терминале, как в прошлый раз ("Ctrl"+"C"), и работу самой утилиты inotifywatch. В выводе мы уже увидим все лишь три "колонки" — total, open и filename (см. рис. 3).

    [​IMG]
    Рисунок 3. Вывод inotifywatch при использовании опции "-e"

    Воспользовавшись справкой для данной утилиты, вы можете увидеть, что inotifywatch способна собирать информацию о довольно большом количестве событий. Получить справку по inotifywatch можно с помощью соответствующего руководства man (man inotifywatch), а также указав перед данной командой опцию - "-h".

    Итак, inotifywatch не отображает статистику о событиях файловой системы сразу. Но, что делать когда необходимо получать информацию о событиях сразу, как они начинают происходить. Во общем, осуществлять мониторинг. В этом нам поможет вторая утилита из пакета Inotify-tools — inotifywait.

    Дайте следующую команду:

    Код:
    $ inotifywait -mr ~
    где опция "-m" — указывает осуществлять мониторинг событий, без этой опции inotifywait прекратит работу после первого события;
    опция "-r" - указывает осуществлять рекурсивный сбор информации о действиях с файловой системой.

    А запустив Mozilla Firefox, вы увидите все файлы, к которым обращается браузер, а также, действия, которые он с ними осуществляет (создание временных файлов, обращение к внутренним базам данных sqlite и т.д.).

    Для получения справки по работе с inotifywait воспользуйтесь соответствующей страницей руководств, а также используйте опцию "-h".

    Заключение

    inotify-tools удобный инструмент мониторинга событий файловой системы. Кроме того, в ситуация, когда необходимо получить сведения о файлах и каталогах, к которым обращается та или иная программа, inotify-tools может стать лучшим решением, т. к. имеет небольшой объем и мало зависимостей, а также является интерфейсом для подсистемы ядра — Inotify.

    Источники и дополнительные материалы:

    1. Страница Википедии, посвященная Inotify - http://ru.wikipedia.org/wiki/Inotify;

    2. Проект Inotify-tools на GitHub — https://github.com/rvoicilas/inotify-tools/;

    3. Исходный код libinotifytools - https://github.com/rvoicilas/inotify-tools/tree/master/libinotifytools/src;

    4. Сайт посвященный libinotifytools — http://inotify-tools.sourceforge.net/api/index.html;

    5. К. Вервлоесем. Inotify: Следим за системой // Linux Format. - N 1. - 2011. - с. 80 - 83.

    (С) _http://rus-linux.net/MyLDP/kernel/Inotify-tools.html​
     

Поделиться этой страницей