Назад | Перейти на главную страницу

Мониторинг файла на предмет изменений и немедленное принятие мер при изменении

Как я могу постоянно отслеживать (маленький) файл на предмет изменений?

Например. при обновлении файла (действие из веб-приложения) выполняется сценарий (если он еще не запущен).

Сейчас я делаю это каждую минуту с помощью cron, но с задержкой до одной минуты. Я хочу принять меры сразу же после изменения файла.

Может быть, мне нужно написать какой-нибудь процесс низкого уровня, работающий в фоновом режиме, после запуска сервера?

Причина, по которой я хочу это сделать, - отделить веб-приложение от корневых действий (выполняемых по запросу, один раз при обновлении файла).

incrond (демон inotify cron) ведет себя как cron, но использует inotify в качестве механизма запуска. Это руководство есть несколько довольно исчерпывающих примеров.

Пример записи incron для описанного вами случая может быть:

/path/to/file IN_CLOSE_WRITE /path/to/your_script

incron - это программа, которую вы ищете.

Если вы используете Linux, как я предполагаю, то вы можете положиться на Linux. inotify механизм, который уведомляет процессы пользовательского пространства при изменении файлов.

LSyncd - это одна программа, построенная на этой функции, которую вы можете настроить для выполнения произвольных команд при изменении файлов.