Incron — интерактивный планировщик заданий для Linux

Почти каждый линуксоид знает что такое Cron. Кто не знает, для тех напомню: это планировщик, позволяющий автоматически запускать произвольные программы в заданное время и с заданной регулярностью. Cron является важнейшей частью любого дистрибутива Linux и активно используется опытными пользователями для того, чтобы упростить себе жизнь. Но далеко не каждый знает, существует другая версия Cron, которая работает не со временем, а с событиями файловой системы. И это открывает поистине грандиозные возможности.

[TOC Incron]

Что такое Incron

Одна из подсистем ядра называется inotify, которая отслеживает изменения в файловой системе и предоставляет механизм уведомления прикладных программ об этих изменениях. Программа Incron собирает уведомления и выполняет связанные с этими событиями команды пользователя. Казалось бы, ну и зачем?

Самый яркий пример применения — создание продвинутых резервных копий. Если обычный Cron делает копию по времени (и не важно изменялись файлы или нет), то Incron может делать резервные копии по факту модификации файлов.

Можно использовать Icron и в целях безопасности, включив отслеживание критических файлов (/etc/passwd, правила iptables и т.п.) и уведомляя пользователя в режиме реального времени об их изменении.

В комбинации с maildir можно построить простую, но эффективную систему уведомления о новой почте. Применений масса, здесь все зависит лишь от вашей фантазии.

Установка и настройка Incron

Установка стандартна:

apt-get install incron

Первое действие при настройке — ограничить список людей, которые могут использовать Incron. Сначала командой "incrontab -l" просмотрите список разрешенных пользователей, потом командой "incrontab -e" отредактируйте его. Сам список содержится в конфигурационном файле /etc/incron.allow. Если его удалить, то Incron смогут использовать все пользователи, зарегистрированные в системе.

Синтаксис конфигурационного файла простой:

[путь] [маска] [команда]

Путь — это путь к контролируемым файлам, маска — события с этими файлами, а команда — команда, которая будет выполнена при возникновении события.

Список событий Incron

Список основных событий над файлами (значение "маска"):

  • IN_ACCESS — совершен доступ к файлу (чтение);
  • IN_ATTRIB — изменены метаданные (разрешения, владелец, время, прочие атрибуты и т.п.);
  • IN_CLOSE_WRITE — закрытие файла после записи в него;
  • IN_CLOSE_NOWRITE — закрытие файла без записи;
  • IN_CREATE — создание файла или директории;
  • IN_DELETE — удаление файла или директории;
  • IN_MODIFY — файл был модифицирован;
  • IN_MOVED_FROM — файл был перемещен из контролируемой директории;
  • IN_MOVED_TO — файл был перемещен в контролируемую директорию;
  • IN_OPEN — файл был открыт.

Синтаксис команд:

  • $$ — знак доллара;
  • $@ — путь к контролируемым файлам/директориям;
  • $# — имя файла, связанное с наступившим событием;
  • $% – имя наступившего события;
  • $& – цифровой код наступившего события.

Пример использования:

/tmp/spool IN_CLOSE_WRITE /usr/local/bin/run-spool $@/$#

Данная команда заставит Incron контролировать директорию /tmp/spool на предмет наступления события IN_CLOSE_WRITE (закрытие файла после записи) и вызовет команду /usr/local/bin/run-spool с указанием имени только что созданного файла.

Пример продвинутого резервного копирования с помощью Incron

Цель — копировать изменяемые конфигурационные файлы из /etc.

nano /root/inotify.sh

Добавим следующие строки:

#!/bin/sh
# Создадим директорию для бекапов (если не существует)
mkdir /var/backups/inotify

# Скопируем файлы, указанные в качестве аргумента нашего скрипта
cp -p --parents $1 /var/backups/inotify

# Добавим отметку о времени
mv /var/backups/inotify$1 /var/backups/inotify$1_`date +'%Y-%m-%d_%H:%M'

Делаем сценарий исполняемым:

chmod 755 /root/inotify.sh

Добавляем соответствующее правило:

incrontab -e

И вписываем:

/etc IN_CLOSE_WRITE,IN_MODIFY /root/inotify.sh $@/$#

Готово. Теперь можно не бояться нарушить работоспособность системы, что-то сконфигурировав не так. В любой момент можно загрузиться в однопользовательском режиме и восстановить нужный конфигурационный файл из /var/backups/inotify.

field_vote: 
Ваша оценка: Нет Средняя: 5 (10 оценки)
Главная тема: 
Дистрибутивы: 
Программное обеспечение: 

Комментарии

Отличная штука! Жалко, что не знал раньше!

Оценка: 
Пока без оценки

Комментировать

Filtered HTML

  • Use [fn]...[/fn] (or <fn>...</fn>) to insert automatically numbered footnotes.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <blockquote> <strike> <code> <h2> <h3> <h4> <h5> <del> <img>
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.