Watchman - 用于更改的文件和目录监视工具

Watchman是一种开源文件监视服务,可以在Linux中进行更改时监视文件和记录,或触发操作。

Watchman是一种开源和跨平台的文件监视服务,可以监视文件和记录,或在更改时执行操作 它由Facebook开发,可在Linux,OS X,FreeBSD和Solaris上运行。 它在客户端 - 服务器模型中运行,并使用Linux内核的inotify实用程序来提供更强大的通知。

守望者的有用概念

  • 它以递归方式观察一个或多个目录树。
  • 每个监视的目录称为root。
  • 它可以通过命令行或以JSON格式编写的配置文件进行配置。
  • 它记录对日志文件的更改。
  • 支持订阅root中发生的文件更改。
  • 允许您查询根目录,以查看自上次检查以来的文件更改或树的当前状态。
  • 它可以观看整个项目。

在本文中,我们将解释如何安装和使用watchman来监视(监视)文件并记录它们在Linux中的更改时间。 我们还将简要演示如何在更改目录时监视目录并调用脚本。

在Linux中安装Watchman文件监视服务

我们将从源代码安装watchman服务,因此首先在Linux发行版上使用以下命令安装这些必需的依赖项libssl-devautoconfautomake libtoolsetuptoolspython-devellibfolly

----------- 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 libssl-devel libtool 
# yum groupinstall 'Development Tools' 

----------- On Fedora -----------
$ sudo dnf install autoconf automake python-setuptools 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观察文件和目录

Watchman可以通过两种方式配置:(1)守护程序在后台运行时通过命令行运行;或(2)通过以JSON格式编写的配置文件运行。

要查看目录(例如~/bin )以进行更改,请运行以下命令。

$ watchman watch ~/bin/
在Linux中观看目录

在Linux中观看目录

以下命令以JSON格式在/ usr / local / var / run / watchman / <username> -state /下写入名为state的配置文件,并在同一位置写入名为log的日志文件。

您可以使用cat命令以show显示这两个文件。

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

您还可以定义在监视目录进行更改时要触发的操作。 例如,在以下命令中,' test-trigger '是test-trigger的名称, ~bin/pav.sh是在被监视的目录中检测到更改时将调用的脚本。

出于测试目的, pav.sh脚本只是在存储脚本的同一目录中创建一个带有时间戳 (即file.$time.txt )的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 
查看观察列表

查看观察列表

要查看的触发器列表,请运行以下命令(使用root名称替换~/bin )。

$ watchman trigger-list ~/bin
显示根的触发器列表

显示根的触发器列表

根据上面的配置,每次~/bin目录更改时, file.2019-03-13.23:14:17.txt在其中创建一个文件,如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日志

Watchman是一种开源文件监视服务,可在更改时监视文件和记录,或触发操作。 使用下面的反馈表来提出问题或与我们分享您的想法。