как поставить триггер на каталог

25

У меня есть скрипт, который сканирует каталог и выполняет некоторые операции с файлами в нем. Другой процесс создает файлы в каталоге (10 - 30 файлов в день).

Скрипт вызывается через ежедневную работу cron. Что мне нужно, это запустить сценарий для события (каждый раз, когда в каталоге создается новый файл). Я предпочитаю это, а не увеличивать частоту работы cron.

Как я могу это сделать? есть команда или программа для установки?

Заранее благодарю за любую помощь.

Альберт Грин
источник

Ответы:

23

inoticoming

inoticoming - это демон, который наблюдает за каталогом с inotify Framework Linux и запускает действия, когда туда помещаются файлы с конкретными именами.

Например, его можно использовать для ожидания загрузки файлов .changes в каталог и вызоваторметы для помещения их в ваш репозиторий.

incron

incron - это система inotify cron. Он работает как обычный cron, но управляется событиями файловой системы, а не событиями времени. Этот пакет содержит две программы: демон под названием "incrond" (аналог crond) и настольный манипулятор "incrontab" (например, "crontab").

incron использует системные вызовы Linux Kernel inotify.

подобно cron, каждый пользователь может редактировать свои собственные таблицы incron.

Флориан Диш
источник
2
Не могли бы вы привести пример? Ссылки на справочные страницы тоже приветствуются, я не смог найти тот incron, inoticomingкоторый здесь .
Лекенштейн
Информацию об incron смотрите на страницах incrond, incrontab и incron.conf
Флориан Диш,
2
Я отредактировал твой ответ так, как хотел его увидеть. Я скопировал его из описаний пакетов, будьте настолько обширны в будущем, когда
будете
4

Существует также небольшая программа под названием iwatch- см. Справочную страницу (эта страница предназначена для точной версии Ubuntu (12.04), она содержит ссылки на другие версии ubuntu).

iwatch имеет возможность рекурсивного просмотра папок (т. е. также вложенных папок) и отправки электронных писем в ответ на события файла / каталога.

drevicko
источник
3

Еще одна полезная утилита fileschanged( страница man здесь ), которая может отслеживать события файловой системы в выбранных файлах или каталогах, например, следующая команда

fileschanged -s created -t1 $PWD

следует отслеживать текущий каталог на наличие событий создания файла, записывая имя созданного файла stdoutс тайм-аутом 1сек.

fileschangedможет смотреть папки рекурсивно (как может, iwatchкак отмечено в другом ответе), в отличие от incronи inoticoming.

enzotib
источник
2

man-страница inotify находится там

если вы предпочитаете сценарии Python, вы можете использовать pyinotify

паскаль
источник