Inotify — отслеживать изменения файловых систем

Установка

sudo apt install php php-dev
sudo pecl install inotify

Запустите эти команды, чтобы добавить расширение в PHP CLI. Предполагается что используется версия php 7.4. Если другая, укажите свою

sudo nano /etc/php/7.4/mods-available/inotify.ini

Вставьте эту строку extension=inotify.so и сохраните изменения

sudo phpenmod inotify

Теперь проверяем что все работает нормально:
В терминале ввести php -r "var_dump(function_exists('inotify_init'));"
Ответ должен быть: bool(true

Пример работы

Запустите в терминале команду

inotifywait -r /var/www/html/ftp -e create,modify,close_write,moved_to

Добавьте в директорию /var/www/html/ftp любой файл

Ответ будет приблизительно следующий

/var/www/html/ftp MOVED_TO 1.jpg

Проверялось на Ubuntu Server 20.04

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

  1. Запустить произвольную команду после события в inotifywait
    inotifywait будет работать в фоне, и при изменении или создании нового файла в директории /var/www/html/records запустит команду curl чтобы отправить запрос на сайт. Вместо curl "http://127.0.0.1/progress/test.php" можно указать любую другую команду.
    & — указывает что это должно выполнятся в фоновом режиме
    inotifywait -r -m -e create,modify,close_write,moved_to /var/www/html/records | while read file; do curl "http://127.0.0.1/progress/test.php"; done &
Наверх