inotifyとは
inotifyとは,ファイルシステムイベントを監視するための機構を提供するAPIである.ファイルやディレクトリを個々に監視することもできる.ディレクトリを監視する場合は,ディレクトリ自身とディレクトリ内のファイルのイベントを返す.
inotifyのイベント一覧
イベント一覧 | 説明 |
---|---|
IN_ACCESS | ファイルがアクセスされた |
IN_ATTRIB | メタデータが変更された |
IN_CLOSE_WRITE | 書き込みのために開かれたファイルが閉じられた |
IN_CREATE | 監視対象ディレクトリ内でファイルやディレクトリが作成された |
IN_DELETE | 監視対象ディレクトリ内でファイルやディレクトリが削除された |
IN_MODIFY | ファイルが変更された |
IN_OPEN | ファイルやディレクトリが開かれた |
シェルスクリプトでinotifyを使用する
ここからは,シェルスクリプトでinotifyを使用してディレクトリの監視を行う方法を説明する.シェルスクリプトでinotifyを使用する場合は,inotifywaitというコマンドを用いることでイベントを表示させることができる.
ディレクトリ内にファイルが作成されたことを検知する
ファイルが作成されたことを検知するコードは以下のようになります.
このコードでは,対象のディレクトリ(/home/mikami/10test)を監視して,もしCREATEを検知したらechoで表示されるようになっています.
if文の中では,「もしCREATEが表示されたら」という条件分岐にすることでファイルの作成を検知した際に処理を行えるようにしています.
ディレクトリ内でファイルの作成完了を検知する
ファイルの作成完了を検知するコードは以下のようになります.
このコードは,上記の「ファイルが作成されたことを検知する」で説明したコードと構造は同じです.違う部分は,CREATEの部分がファイルの作成完了を意味するCROSE_WRITEに変わる所です.
こうすることで,ファイルの作成完了を検知した際に行いたい処理を実行することができます.
シェルスクリプトでinotifyを使用する際の注意点
オプションの-mを付けるかを考える.
付ける場合 :実行から実行終了まで監視を続ける
付けない場合:最初のイベントで監視が終了する
最後に
今回は,inotifyでのディレクトリの監視をシェルスクリプトを用いて行ってみました.if文の下のコード1行を書き換えてもらえれば,「ファイルが作成された際」と「ファイルが作成完了された際」に行いたい処理を実行することができます.是非,参考にしてみて下さい.