LoginSignup
3
1

More than 1 year has passed since last update.

inotifyでディレクトリ内の監視をしてみた

Last updated at Posted at 2023-01-12

inotifyとは

inotifyとは,ファイルシステムイベントを監視するための機構を提供するAPIである.ファイルやディレクトリを個々に監視することもできる.ディレクトリを監視する場合は,ディレクトリ自身とディレクトリ内のファイルのイベントを返す.

inotifyのイベント一覧

イベント一覧 説明
IN_ACCESS ファイルがアクセスされた
IN_ATTRIB メタデータが変更された
IN_CLOSE_WRITE 書き込みのために開かれたファイルが閉じられた
IN_CREATE 監視対象ディレクトリ内でファイルやディレクトリが作成された
IN_DELETE 監視対象ディレクトリ内でファイルやディレクトリが削除された
IN_MODIFY ファイルが変更された
IN_OPEN ファイルやディレクトリが開かれた

シェルスクリプトでinotifyを使用する

ここからは,シェルスクリプトでinotifyを使用してディレクトリの監視を行う方法を説明する.シェルスクリプトでinotifyを使用する場合は,inotifywaitというコマンドを用いることでイベントを表示させることができる.

ディレクトリ内にファイルが作成されたことを検知する

ファイルが作成されたことを検知するコードは以下のようになります.
qiita.png
このコードでは,対象のディレクトリ(/home/mikami/10test)を監視して,もしCREATEを検知したらechoで表示されるようになっています.

if文の中では,「もしCREATEが表示されたら」という条件分岐にすることでファイルの作成を検知した際に処理を行えるようにしています.

ディレクトリ内でファイルの作成完了を検知する

ファイルの作成完了を検知するコードは以下のようになります.
qiita1.png
このコードは,上記の「ファイルが作成されたことを検知する」で説明したコードと構造は同じです.違う部分は,CREATEの部分がファイルの作成完了を意味するCROSE_WRITEに変わる所です.

こうすることで,ファイルの作成完了を検知した際に行いたい処理を実行することができます.

シェルスクリプトでinotifyを使用する際の注意点

オプションの-mを付けるかを考える.
付ける場合 :実行から実行終了まで監視を続ける
付けない場合:最初のイベントで監視が終了する

最後に

今回は,inotifyでのディレクトリの監視をシェルスクリプトを用いて行ってみました.if文の下のコード1行を書き換えてもらえれば,「ファイルが作成された際」と「ファイルが作成完了された際」に行いたい処理を実行することができます.是非,参考にしてみて下さい.

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1