ウェブサイト検索

Watchman - ファイルとディレクトリの変更を監視するツール


ウォッチマン は、ファイルを監視し、ファイルが変更されたときに記録またはアクションを実行する、オープンソースのクロスプラットフォームのファイル監視サービスです。これはFacebook によって開発され、Linux、OS X、FreeBSD、Solaris 上で動作します。これはクライアント/サーバー モデルで実行され、Linux カーネルの inotify ユーティリティを使用して、より強力な通知を提供します。

ウォッチマンの便利な概念

  • 1 つ以上のディレクトリ ツリーを再帰的に監視します。
  • 監視されている各ディレクトリはルートと呼ばれます。
  • コマンドラインまたは JSON 形式で記述された構成ファイルを介して構成できます。
  • 変更をログ ファイルに記録します。
  • ルートで発生するファイル変更のサブスクリプションをサポートします。
  • 最後にチェックしてからのファイルの変更、またはツリーの現在の状態をルートに問い合わせることができます。
  • プロジェクト全体を監視できます。

この記事では、Linux でファイルを監視 (監視) し、変更を記録するためのウォッチマン をインストールして使用する方法を説明します。また、ディレクトリを監視し、ディレクトリが変更されたときにスクリプトを呼び出す方法も簡単に説明します。

Linux への Watchman ファイル監視サービスのインストール

watchman サービスをソースからインストールするので、最初にこれらの必要な依存関係である libssl-devautoconfautomake < をインストールします。 Linux ディストリビューションで次のコマンドを使用して、strong>libtool、setuptoolspython-devel、および libfolly を使用します。

----------- On Debian/Ubuntu ----------- 
sudo apt install autoconf automake build-essential python-setuptools python-dev libssl-dev libtool 

----------- On RHEL/CentOS -----------
yum install autoconf automake python-setuptools python-devel openssl-devel libssl-devel libtool 
yum groupinstall 'Development Tools' 

----------- On Fedora -----------
sudo dnf install autoconf automake python-setuptools openssl-devel libssl-devel libtool 
sudo dnf groupinstall 'Development Tools'  

必要な依存関係がインストールされたら、github リポジトリをダウンロードして watchman の構築を開始し、ローカル リポジトリに移動し、次のコマンドを使用して構成、ビルド、インストールできます。

git clone https://github.com/facebook/watchman.git
cd watchman
git checkout v4.9.0  
./autogen.sh
./configure
make
sudo make install

Linux で Watchman を使用してファイルとディレクトリを監視する

ウォッチマンは 2 つの方法で設定できます: (1) デーモンがバックグラウンドで実行されている間にコマンドラインを介して、または (2) JSON 形式で記述された設定ファイルを介して。

ディレクトリ (例: ~/bin) の変更を監視するには、次のコマンドを実行します。

watchman watch ~/bin/

次のコマンドは、state という構成ファイルを /usr/local/var/run/watchman/-state/ に JSON 形式で書き込み、ログも書き込みます。 log という名前のファイルが同じ場所にあります。

cat コマンドを show として使用すると、2 つのファイルを表示できます。

cat /usr/local/var/run/watchman/aaronkilik-state/state
cat /usr/local/var/run/watchman/aaronkilik-state/log

また、監視されているディレクトリの変更時にトリガーするアクションを定義することもできます。たとえば、次のコマンドでは、「test-trigger」はトリガーの名前で、~bin/pav.sh は変更が検出されたときに呼び出されるスクリプトです。監視されているディレクトリ内。

テスト目的で、pav.sh スクリプトは同じディレクトリ内にタイムスタンプを持つファイル (つまり、file.$time.txt) を作成するだけです。スクリプトが保存されている場所。

time=`date +%Y-%m-%d.%H:%M:%S`
touch file.$time.txt

ファイルを保存し、図のようにスクリプトを実行可能にします。

chmod +x ~/bin/pav.sh

トリガーを起動するには、次のコマンドを実行します。

watchman -- trigger ~/bin 'test-trigger' -- ~/bin/pav.sh

watchman を実行してディレクトリを監視し、監視リストに追加して表示するには、次のコマンドを実行します。

watchman watch-list 

ルートのトリガー リストを表示するには、次のコマンドを実行します (~/binroot 名に置き換えます)。

watchman trigger-list ~/bin

上記の構成により、~/bin ディレクトリが変更されるたびに、その中に file.2019-03-13.23:14:17.txt のようなファイルが作成されます。 ls コマンドを使用してそれらを表示できます。

ls

Linux での Watchman サービスのアンインストール

watchman をアンインストールする場合は、ソース ディレクトリに移動して次のコマンドを実行します。

sudo make uninstall
cd '/usr/local/bin' && rm -f watchman 
cd '/usr/local/share/doc/watchman-4.9.0 ' && rm -f README.markdown 

詳細については、Watchman Github リポジトリ: https://github.com/facebook/watchman を参照してください。

以下の関連記事もお読みください。

  1. Swatchdog – Linux でリアルタイムのシンプルなログ ファイル ウォッチャー
  2. ログ ファイルをリアルタイムで監視または監視する 4 つの方法
  3. fswatch – Linux でのファイルとディレクトリの変更を監視
  4. Pyintify – Linux でファイルシステムの変更をリアルタイムで監視する
  5. Inav – Linux で Apache ログをリアルタイムで監視する

ウォッチマン は、ファイルを監視して記録したり、変更があった場合にアクションをトリガーしたりするオープンソースのファイル監視サービスです。ご質問やご意見を共有するには、以下のフィードバック フォームをご利用ください。