网站搜索

Watchman - 文件和目录变化监视工具


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

守望者的有用概念

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

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

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

我们将从源安装 watchman 服务,因此首先安装这些必需的依赖项 libssl-devautoconfautomake <在您的 Linux 发行版上使用以下命令:strong>libtool、setuptoolspython-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 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/

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

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

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 

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

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 日志

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