Fswatch は、指定されたファイルまたはディレクトリの内容が変更または変更されたときに通知する、無料のオープンソースマルチプラットフォームファイル変更監視ユーティリティです。 fswatchを使用すると、ファイルやディレクトリに加えられた変更を簡単に監視できます。 GNU / Linux、* BSD、Mac OS X、Solaris、Microsoft Windowsなどを含むすべてのオペレーティングシステムをサポートします。この簡単なガイドでは、Unixのようなオペレーティングシステムでfswatchを使用してファイルの変更を監視する方法を紹介します。
監視の種類
fswatchは、次のタイプのモニターを実装しています。
- AppleOSXのファイルシステムイベントAPIに基づくモニター。
- FreeBSD4.1で導入された通知インターフェースであるkqueueに基づくモニター。
- Solarisカーネルとその派生物のファイルイベント通知APIに基づくモニター。
- ファイルシステムの変更をアプリケーションに報告するLinuxカーネルサブシステムであるinotifyに基づくモニター。
- ディレクトリへの変更を報告するMicrosoftWindowsAPIであるReadDirectoryChangesWに基づくモニター。
- ファイルシステムを定期的に統計し、ファイルの変更時間をメモリに保存し、ファイルシステムの変更を手動で計算するモニター。
機能
機能に関しては、以下をリストすることができます:
- クロスプラットフォームおよびオープンソースユーティリティ。
- 多くのOS固有のAPIのサポート。
- 再帰的なディレクトリ監視。
- 正規表現の包含と除外を使用したパスフィルタリング。
- カスタマイズ可能なレコード形式。
- 定期的なアイドルイベントのサポート。
- そしてたくさん。
Linuxでfswatchを使用してファイルの変更を監視する
ほとんどのLinuxディストリビューションのデフォルトのリポジトリではfswatchユーティリティを使用できないため、以下に説明するように、ソースから最新バージョンを手動でコンパイルしてインストールする必要があります。
コンパイルする前に、Linuxディストリビューションに開発ツールをインストールする必要があります。さまざまなLinuxディストリビューションに開発ツールをインストールするには、次のガイドを参照してください。
- Linuxに開発ツールをインストールする方法
次に、fswatchソースファイルをここからダウンロードします。 。
$ wget https://github.com/emcrisostomo/fswatch/releases/download/1.9.3/fswatch-1.9.3.tar.gz
ダウンロードしたtarballを抽出します:
$ tar -zxvf fswatch-1.9.3.tar.gz
プロジェクトのフォルダに移動します:
$ cd fswatch-1.9.3/
最後に、次のコマンドを1つずつ実行して、fswatchをコンパイルしてインストールします。
$ ./configure
$ make
$ sudo make install
最後に、次のコマンドを実行して、リンクを更新し、ダイナミックライブラリにキャッシュします。
$ sudo ldconfig
上記のコマンドを実行しないと、GNU/Linuxシステムで次のエラーが発生する可能性があります。
fswatch: error while loading shared libraries: libfswatch.so.6: cannot open shared object file: No such file or directory
fswatchの使用法
fswatchの使用は大したことではありません。 fswatchの一般的な構文は次のとおりです。
$ fswatch [options] ... path-0 ... path-n
fswatchがどのように機能するかをテストするには、2つのターミナルウィンドウを開きます(ターミナル1 と呼びます)。 およびターミナル2 。
ターミナル1で、fswatchコマンドを実行して$HOMEディレクトリを監視します。
$ fswatch /home/sk/
また、ターミナル2では、ファイル/フォルダーの作成、ファイルの削除、ファイルの変更などの操作を実行します。
ターミナル2で行うことはすべて、ターミナル1で通知されます。次のスクリーンショットをご覧ください。
ターミナル1 --fswatchコマンドが実行され、ファイルの変更が監視されています:

fswatchを使用してファイルの変更を監視する
ターミナル2 -ファイル/フォルダをランダムに変更します:
デフォルトでは、fswatchは、パフォーマンスとリソース消費の観点から、現在のプラットフォームで利用可能な最適なモニターを選択します。 Linuxでは、デフォルトのモニターは inotify 。
現在のプラットフォーム(この場合はLinux)で使用可能なモニターを一覧表示するには、次のコマンドを実行します。
$ fswatch -M
または、
$ fswatch --list-monitors
出力例:
inotify_monitor poll_monitor
特定の監視オプションを使用して特定のファイルまたはディレクトリを監視するには、次のコマンドを実行します。
$ swatch -m kqueue_monitor /home/sk/
デフォルトでは、fswatchは、 CTRL + C を呼び出して手動で停止するまで、ファイルの変更を監視し続けます。 キー。
オプション-1を指定して、最初のイベントセットを受信した後でfswatchを終了することもできます。 次のコマンドに示すように:
$ fswatch -1 /home/sk/
このコマンドは、最初の一連のイベントが受信された直後に終了します。
fswatchは、指定されたパス内のすべてのファイル/フォルダーの変更を監視します。ディレクトリで行われた変更のみを監視する場合は、 -dを使用します オプション。
$ fswatch -d /home/sk/
もちろん、もっと多くのオプションがあります。マニュアルページまたはプロジェクトのドキュメントページを参照してください 詳細な手順については。
$ man fswatch