SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【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権限が必要。マウントポイント単位。

関連するメモ

コメント