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

Слежение за изменением файлов и директорий в Linux shell
Пакет inotify-tools содержит две полезные утилиты:

inotifywait - ожидать наступления определенного события в файле или дирекотории. 

inotifywatch - слежение за статистикой изменений и вывод суммарных данных.

Утилиту inotifywait  удобно использовать в скриптах, например, когда нужно дождаться 
завершения внешней операции с файлом и мгновенно среагировать на изменения.

Напрмер, запустим:
   inotifywait /tmp

При попытке создать файл в /tmp утилита завершит работу, выдав:

   /tmp/ CREATE,ISDIR v31549

При попытке создать директорию:

   /tmp/ CREATE,ISDIR 0

Если необходимо следить за изменением во всех директориях в пределах /tmp, 
следует использовать флаг рекурсивного контроля "-r". 
Для больших директорий может понадобиться расширить лимит /proc/sys/fs/inotify/max_user_watches.
Используя опцию "--fromfile" можно загрузить список контролируемых файлов и директорий из файла.
Опция "-e" позволяет реагировать только на определенный тип события, например,
на удаление файла, игнорируя создание и открытие.
Опция '-m' отменяет мгновенный выход после наступления события, что позволяет организовать 
визуальное наблюдение или обработку в цикле.

Пример, скрипта для обработки изменения файла:

   #!/bin/sh
   inotifywait -e delete -m /tmp/lock/ | while read dir events file; do
      echo "Removed $dir$file"
   done


При выполнении:

   inotifywatch /tmp

и последующем завершении выполнения через задание таймаута или нажатия ctrl+c, 
будет выведена суммарная информация по каждому из классов событий, напрмер:

   total  modify  close_write  close_nowrite  open  create  delete  filename
   22     3       4            1              5     4       5       /tmp/

Или

   inotifywatch -v -e access -e modify -t 60 -r /var/log

через 60 секунд выдаст:

   14     14      /var/log/
   2      2       /var/log/apache2
   4      4       /var/log/postgresql

Что касается кроссплатформенного решения, которое работает, не только в Linux, но и во FreeBSD, 
можно привести пример слежения за изменением файла используя Perl модуль EV (http://search.cpan.org/dist/EV/),
использующий универсальную библиотеку-враппер libev:

   #!/usr/bin/perl

   use strict;
   use EV;

   # Следим за изменениями в директории /tmp/watch
   # 0 - интервал опроса по умолчанию
   my $w = EV::stat "/tmp/watch", 0,
   sub {
            my ($w, $revents) = @_;
            warn $w->path, " has changed somehow.".$w->attr."\n";
            $w->stop;
            # На время обработки события, прекращаем прием нотификаций. 
            .....
            $w->start;
   };

   EV::loop;
 
22.09.2008
Раздел:    Корень / Администратору / Система / Просмотр состояния и мониторинг системы

Обсуждение [ RSS ]
 
  • 1, pavlinux, 19:32, 22/09/2008 [ответить] [смотреть все]
  • +/
    Кроссплатформенное это SGI::FAM - http://search.cpan.org/~jglick/SGI-FAM-1.002/lib/SGI/FAM.pm

     
  • 2, Вася, 16:46, 23/09/2008 [ответить] [смотреть все]
  • +/
    Оно рекурсивно не умеет, точнее только через жопу.

    Для всей файловой системы dazuko нужен.

     
  • 3, Аноним, 18:42, 24/09/2008 [ответить] [смотреть все]
  • +/
    http code activestate com recipes 576377 - это умеет рекурсивно ... весь текст скрыт [показать]
     

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

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

    Последние заметки
    - 12.05 Организация шифрованного бэкапа с помощью rdiff-backup, encfs и Dropbox
    - 11.05 Настройка беспроводного соединения в Debian GNU/Linux
    - 07.05 Использование Google Drive в Linux
    - 18.04 Использование нескольких сетевых стеков в Linux
    - 15.04 Восстановление стандартного KDE меню после его удаления (например, wine)
    - 11.04 Настройка gmirror при использовании GPT во FreeBSD 9
    - 09.04 Маршрутизатор на базе FreeBSD с приоритизация трафика средствами PF и ALTQ
    - 02.04 Частичное восстановление данных MySQL из бэкапа, созданного с использованием LVM
    - 21.03 Настройка DNSSEC в BIND 9.9
    - 17.03 Набор номера на Cisco IP Phone 7960/7940 из скрипта
    RSS | Следующие 15 записей >>


    ПОДПИШИСЬ НА ЖУРНАЛ Linux Format 2012!

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

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

    Оформить подписку на год


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