hana_shinのLinux技術ブログ読者になるhana_shinのLinux技術ブログLinuxの技術情報を掲載しています。ネットワークをメインに掲載していきます。inotifywaitコマンドとは?ファイルやディレクトの作成/削除等で発生するイベントを監視するコマンドです。以下のシステムコールを使ってイベントを監視しています。検証環境CentOS版数は以下のとおりです。(Core)カーネル版数は以下のとおりです。inotifywaitコマンドのインストール方法inotify-toolsパッケージはepelレポジトリにあるので、まずepel-releaseパッケージをインストールします。epel-release次に、notify-toolsパッケージをインストールします。inotify-toolsinotifywaitコマンドの版数を確認します。オプション一覧オプションは以下のとおりです。イベントの種類イベントには以下のものがあります。open)openイベントは、ファイルやディレクトリをオープンしたときに発生します。テスト用のディレクトリを作成します。/testファイルを作成します。/test/test.txtinotifywaitコマンドを実行します。このとき、ファイル(test.txt)をopenしたときのイベントを監視します。established.もう1つターミナルを開きます。catコマンドでファイルをリードします。~]#inotifywaitコマンドの実行結果を確認します。OPENイベントが発生していることがわかります。OPENlsコマンドでディレクトリの中身を表示しても、OPENイベントが発生します。lsコマンドで/tmpの中身を表示してみます。established./tmpディレクトリに対して、lsコマンドを実行します。/test/test.txtinotifywaitコマンドの実行結果を確認します。OPENイベントが発生していることがわかります。attrib)attribイベントは、ファイルやディレクトリの属性が変更されたときに発生します。established.ファイルの属性を確認します。/test/test.txtファイルの属性を変更します。/test/test.txtinotifywaitコマンドの実行結果を確認します。ATTRIBイベントが発生していることがわかります。modify)MODIFYイベントは、ファイルを作成したりファイルに書き込みをすると発生します。ここでは、/testディレクトリ配下にファイルが作成されたら発生するMODIFYイベントを監視してみます。established.ファイルに書き込みをします。/test/aainotifywaitコマンドの実行結果を確認します。MODIFYイベントが発生していることがわかります。delete)DELETEイベントは、指定したディレクト配下のファイルやディレクトリが削除されると発生します。established.テスト用のファイルを作成します。/test/test.txtテスト用のファイルを削除します。yinotifywaitコマンドの実行結果を確認します。DELETEイベントが発生していることがわかります。delete_self)DELETE_SELFイベントは、指定したファイルやディレクトリが削除されると発生します。テスト用のファイルを作成します。/test/test.txtファイルが削除されたら発生するDELETE_SELFイベントを監視してみます。established.ファイルを削除します。yinotifywaitコマンドの実行結果を確認します。DELETE_SELFイベントが発生していることがわかります。create)CREATEイベントは、指定したディレクトリ配下にファイルやディレクトリを作成すると発生します。テスト用のディレクトリを作成します。/aディレクトリを作成したら発生するCREATEイベントを監視してみます。established./aディレクトリに/bディレクトリを作成します。/a/binotifywaitコマンドの実行結果を確認します。CREATEイベントが発生していることがわかります。moved_from)MOVED_FROMイベントは、指定したディレクトリ配下からファイルやディレクトを移動すると発生します。テスト用のファイルを作成します。/test/test.txt/testディレクトリ配下にファイルが移動されたら発生するMOVED_FROMイベントを監視してみます。established.ファイルを/testディレクトリから/tmpディレクトリに移動します。/tmp/inotifywaitコマンドの実行結果を確認します。MOVED_FROMイベントが発生していることがわかります。moved_to)moved_toイベントは、指定したディレクトリ配下へファイルやディレクトを移動すると発生します。テスト用のファイルを作成します。/test/test.txt/tmpディレクトリ配下にファイルが移動されたら発生するMOVED_TOイベントを監視してみます。established.ファイルを/testディレクトリから/tmpディレクトリに移動します。/tmp/inotifywaitコマンドの実行結果を確認します。MOVED_TOイベントが発生していることがわかります。)unmountイベントは、ファイルやディレクトリを含んだファイルシステムをアンマウントすると発生します。ループバックデバイスとして使うファイルを作成します。hana_shinのLinux技術ブログを参照してください。disk.imgループバックデバイスを作成します。hana_shinのLinux技術ブログを参照してください。/root/disk.imgループバックデバイスを確認します。/root/disk.imgループバックデバイスにファイルシステムを作成します。/dev/loop0作成したファイルシステムを/mntにマウントします。/mntファイルシステムを確認します。ファイルシステムが/mntにマウントされたことがわかります。/mntファイルを作成します。/mntファイルシステムをアンマウントしたら発生するUNMOUNTイベントを監視してみます。established.作成したフィルシステムをアンマウントします。/mntinotifywaitコマンドの実行結果を確認します。UNMOUNTイベントが発生していることがわかります。リカーシブオプションの使い方(-r)-rはディレクトリ配下の全てのファイル、ディレクトリを監視対象にするオプションです。事前準備テスト用のディレクトリを作成します。/a/b/cテスト用のファイルを作成します。/a/b/c/test.txt作成したファイルを確認します。established.ファイルに書き込みをします。/a/b/c/test.txtファイルに書き込みをしてもイベントが発生しないことがわかります(期待値)。established.ファイルに書き込みをします。/a/b/c/test.txtMODIFY,OPEN,CLOSE_WRITE,CLOSEのイベントが表示されていることがわかります(期待値)。時刻を表示する方法(timefmt)timefmtは、時刻の表示形式を指定するオプションです。timefmtは、formatオプションと一緒に使う必要があります。formatは、表示項目を指定します。表示項目としては、時刻(%T)、監視対象(%w)、監視イベント(%e)等が指定できます。established./aディレクトリ配下のファイルを表示します。/a1列目に時刻が表示されていることがわかります。出力するメッセージをファイルに保存するオプションです。established./aディレクトリ配下のファイルを表示します。/aフメッセージを保存したファイルを確認します。デーモンプロセスとして起動する方法(-d)-dはinotifywaitプロセスをデーモンプロセスとして動かすオプションです。このとき、-oオプションも一緒に指定する必要があります。-oオプションで、デーモンプロセスが出力するメッセージの出力先を指定します。inotifywaitコマンドを実行して、inotifywaitをデーモンプロセスとして起動します。/apsコマンドを実行して、プロセスの状態を確認します。TTY列が?となっているので、デーモンプロセスであることがわかります。デーモンプロセスとは、標準入出力を持たないプロセスのことです。?inotifywaitプロセスを終了します。csvフォーマットで出力する方法(-c)-cはinotifywaitが出力するメッセージを","で区切るオプションです。established./aディレクトリ配下のファイルを表示します。/a各列が","で区切られていることがわかります。私が業務や記事執筆で参考にした書籍を以下のページに記載します。)はてなブログをはじめよう!hana_shinさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。