Мгновенный просмотр изменений файлов через inotify

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

inotifyinotifywaitlinux

👁 Многие до сих пор делают костыли с while true и проверками файлов через sleep, когда нужно отследить изменения. Это утилизирует CPU, даёт задержки и плохо масштабируется. В Linux есть нативный механизм — inotify, который позволяет получать события от файловой системы сразу, без опроса.

📝 Отслеживание изменений файлов и директорий через inotifywait

Утилита inotifywait позволяет подписаться на события: создание файлов, изменения, удаление и т.д. Флаг -m включает постоянный мониторинг, а события позволяют точно отслеживать, что происходит с файлами без лишней нагрузки.

inotifywait -m /var/log/myapp -e modify -e create -e delete

📝 Реакция на изменения в реальном времени

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

inotifywait -m /data -e create --format '%f' | while read file; do
  echo "Новый файл: $file"
done

📝 Масштабирование и лимиты inotify

При работе с большим количеством файлов можно упереться в лимиты ядра. Без увеличения лимитов мониторинг больших директорий может просто не работать или отваливаться.

sysctl fs.inotify.max_user_watches
sysctl -w fs.inotify.max_user_watches=524288

❗️ inotify — это база для real-time обработки файлов в Linux. Если ты всё ещё используешь polling, то ты тратишь ресурсы впустую и получаешь менее предсказуемое поведение.

tags: #linux #мониторинг #полезно

🧭 @recura_tech 🌐 VK 🌐 MAX

Скриншот: тёмная карточка RECURA с примерами команд inotifywait и sysctl для мониторинга изменений файлов в Linux.
Примеры команд inotifywait и увеличение лимита fs.inotify.max_user_watches.

Читайте так же