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

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

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

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

在 Linux 中安装 Watchman File Watching Service

我们将从源代码安装 watchman 服务,因此首先使用以下命令在 Linux 发行版上安装这些必需的依赖项 libssl-devautoconfautomake libtoolsetuptoolspython-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 查看文件和目录

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

要监视目录(例如)的更改,请运行以下命令。~/bin

$ watchman watch ~/bin/

在 Linux 中监视目录

在 Linux 中监视目录

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

您可以使用 cat 命令查看这两个文件,如 show 所示。

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

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

出于测试目的,脚本只是在存储脚本的同一目录中创建一个带有时间戳(即 )的文件。pav.shfile.$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

显示根的触发器列表

显示根的触发器列表

基于上述配置,每次目录更改时,都会在其中创建一个文件,您可以使用 ls 命令查看它们。~/binfile.2019-03-13.23:14:17.txt

$ ls

测试 Watchman 配置

测试 Watchman 配置

在 Linux 中卸载 Watchman Service

如果要卸载 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 存储库:GitHub - facebook/watchman: Watches files and records, or triggers actions, when they change.

您可能还想阅读以下相关文章。

  1. Swatchdog – Linux 中实时的简单日志文件观察器
  2. 实时监视或监视日志文件的 4 种方法
  3. fswatch – 监控 Linux 中的文件和目录更改
  4. Pyintify – 在 Linux 中实时监控文件系统更改
  5. Inav – 在 Linux 中实时观看 Apache 日志

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值