inotify を用いてファイル操作の監視(Ubuntu 上)

Linuxカーネルのinotify機能はファイルシステムイベントを通知し、inotify-toolsで利用できる。inotifywaitはイベント待機・表示を行い、aptでインストールする。オプション`-r`で再帰、`-m`で継続監視、`--format`で出力を設定可能である。監視数上限やNFS等の制限がある。

inotifyはLinuxカーネルが提供する機能であり、ファイルやディレクトリに対する様々な操作(作成、削除、変更、移動など)が発生した際にアプリケーションへ通知する。inotify-toolsは、このinotify機能を手軽に利用するためのコマンドラインツール群であり、中でもinotifywaitコマンドは指定したイベントの発生を待機し、その情報を標準出力に表示する主要なツールである。

インストール

inotifywaitコマンドを含むinotify-toolsパッケージは、標準のリポジトリからインストールできる。以下のコマンドを実行する。

# パッケージリストの情報を更新
sudo apt update
sudo apt -y install inotify-tools

このコマンドにより、inotifywaitやinotifywatchなどの関連ツールがシステムにインストールされる。Ubuntu 24.04 LTSでは、このパッケージの最新バージョンが利用可能である。

使い方の例

特定のディレクトリとそのサブディレクトリにおけるファイル操作イベントを再帰的かつ継続的に監視する基本的な例を示す。以下のコマンドは、現在のディレクトリ(例としてホームディレクトリに移動してから実行)を監視対象とする。

cd
inotifywait -rm --format '%T %w %f %e' .

上記のinotifywaitコマンドで使用している主なオプションは以下の通りである。

--formatオプションで使用可能な主な書式コードは以下の情報に対応する。

例えば、上記のコマンドを実行中に監視対象ディレクトリ内でファイルを作成したり、内容を変更したりすると、設定したフォーマットに従って以下のような形式でイベント情報が出力される。


HH:MM:SS /path/to/directory/ FILENAME EVENT1,EVENT2,...

注意点: inotifyが一度に監視できるファイル/ディレクトリの数にはシステム全体で上限(デフォルトは通常8192)がある。多数のファイルを監視する場合、この上限に達して監視が正常に行えない可能性がある。また、inotifyはネットワークファイルシステム(NFSなど)、疑似ファイルシステム(/proc, /sysなど)、およびメモリマップファイル操作による変更は検出できないという制限がある。