【linux】inotifywaitでファイルの変更を監視する
問題
ファイルが変更されたり、追加、削除されるのを検知したいです。
答え
inotifywait コマンドで可能。
使用例
inotifywait -m -r -e modify,create,delete --format '%w%f' /home/www-data/
-m 繰り返し通知
-r 指定したディレクトリの中を再帰的に監視
-e 通知するイベント
–format 通知の形式
監視対象はディレクトリやファイル。
除外したいファイルがあるときは –exclude で除外。
使用例
-m でずるずると変更が通知されてくるのを while で受け取る例。
ここでは単にechoしている。
#!/bin/bash
inotifywait -m -r -e modify,create,delete --format '%w%f' --exclude '^/var/www/html/xxx/' /var/www/html | while read filepath
do
echo $filepath
done
注意点
-r でディレクトリの中を再帰的に監視させることができるが、数が多すぎると対応できない。デフォルト8192個まで。
似たものに
inotifywatch 停止するまで発生したファイルシステムイベントの統計情報を表示する。
fanotify API ファイルシステムイベントを監視する。root権限が必要。マウントポイント単位。
コメント