STERFIELD

inotifyを使ってみる

inotifyを使ってみる

Linuxサーバ上で、特定ディレクトリ以下へのファイルアクセスを監視する需要があったため、inotifyを使ってみることにしました。

inotifyとはLinuxカーネル2.6.13から追加された機能で、平たく言うと、ディスクへの読み書きイベントを通知する機能のことです。Windowsでは昔からディスク・ファイル読み書きイベントの横取りが可能だったこともあり、この機能が2005年まで無かったというのは驚きです。

さて、本題に戻りましょう。yumパッケージマネージャを使ってシステムへインストールします。

# yum install inotify-tools

次はinotifyの起動ですがapacheやvsFTPのようにdaemonサービスとして動作するわけではありません。今回はバックグラウンドプロセスとして、コンソールから起動するようにしました。

# inotifywait -rdm -o /var/log/inotify.log --format '%T %w%f %e' --timefmt '%F %T' --exclude '/|admin\/' /var/www/html/ &

長々とオプションを指定してますが、「/var/www/html/以下で”/admin/”を含むディレクトリ以外でディレクトリ・ファイルアクセスが発生したら日時とともにログファイルへ保存する」という動きを定義しました。動作オプション動作オプションとしてrdmの組み合わせが一般的なようです。指定ディレクトリ以下を監視+デーモンモードとして常時監視+ループモードとして何度でもイベントを受ける、という意味です。この辺の組み合わせはここに書き切れないので、詳しくは–helpオプションで。

適当なファイルを作って更新して、消した場合の動作ログはこのような感じになります。

2017-09-dd hh:mm:ss /var/www/html/ CREATE test.txt
2017-09-dd hh:mm:ss /var/www/html/ MODIFY test.txt
2017-09-dd hh:mm:ss /var/www/html/ DELETE test.txt

「いつ」「どこで」「なんのファイルが」「どうなったか」が刻々と記録されます。あとはログファイルを監視するzabbix等と連携すれば、ファイル・ディレクトリの監視が行えます。

Author Profile

著者近影

スターフィールド編集部

SHARE

合わせて読みたい