Bashプログラミング
 Computer >> コンピューター >  >> プログラミング >> Bashプログラミング

Watchman:効率的なファイルおよびディレクトリ変更監視ツール

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

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

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

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

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

ここでは監視員を設置します。 サービスをソースから取得するため、最初にこれらの必要な依存関係 libssl-dev をインストールします。 、自動設定オートメイク リブツールセットアップツールPython-開発 そしてリボリー Linux ディストリビューションで次のコマンドを使用します。

----------- 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/
Watchman:効率的なファイルおよびディレクトリ変更監視ツール Linux でディレクトリを監視する

次のコマンドは、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 
Watchman:効率的なファイルおよびディレクトリ変更監視ツール ウォッチ リストを表示

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

$ watchman trigger-list ~/bin
Watchman:効率的なファイルおよびディレクトリ変更監視ツール ルートのトリガー リストを表示

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

$ ls
Watchman:効率的なファイルおよびディレクトリ変更監視ツール テスト ウォッチマンの構成

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 を参照してください。

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

<オル>
  • Swatchdog – Linux でのリアルタイムのシンプルなログ ファイル ウォッチャー
  • ログ ファイルをリアルタイムで監視または監視する 4 つの方法
  • fswatch – Linux でのファイルとディレクトリの変更を監視
  • Pyintify – Linux でファイルシステムの変更をリアルタイムで監視する
  • Inav – Linux で Apache ログをリアルタイムで監視する
  • ウォッチマン は、ファイルと記録を監視したり、変更があった場合にアクションをトリガーしたりするオープンソースのファイル監視サービスです。ご質問やご意見を共有するには、以下のフィードバック フォームをご利用ください。


    1. rsync を使用した Linux のバックアップ:15 の必須コマンド

      rsync はリモート同期の略です。 rsync は、UNIX/Linux でバックアップ操作を実行するために使用されます。 rsync ユーティリティは、ファイルとディレクトリをある場所から別の場所に効果的な方法で同期するために使用されます。バックアップの場所は、ローカル サーバーまたはリモート サーバーにあります。 rsync の重要な機能 速度 :初めて、rsync はソース ディレクトリと宛先ディレクトリの間でコンテンツ全体をレプリケートします。次回、rsync は変更されたブロックまたはバイトのみを宛先の場所に転送するため、転送が非常に高速になります。 セキュリティ :r

    2. RAID 0、1、5、および 10 について理解する:ビジュアル ガイド

      ラメシュ・ナタラジャン著 2010 年 8 月 10 日 RAID は、Redundant Array of Inexpensive (Independent) Disks の略です。 ほとんどの状況では、次の 4 つのレベルの RAID のいずれかを使用します。 RAID 0 RAID 1 RAID 5 RAID 10 (RAID 1+0 とも呼ばれます) この記事では、これらの Raid レベルの主な違いを、わかりやすい図とともに説明します。 以下のすべての図では次のようになります。 A、B、C、D、E、F – ブロックを表します p1、p2、および p3 – パリティを