Watchman 是一种开源和跨平台的文件监视服务,可在文件更改时监视文件并记录或执行操作。它由 Facebook 开发,可在 Linux、OS X、FreeBSD 和 Solaris 上运行。它以客户端-服务器模型运行,并使用 Linux 内核的 inotify 实用程序来提供更强大的通知。
守望者的有用概念
- 它递归地监视监视一个或多个目录树。
- 每个监视目录都称为根目录。
- 它可以通过命令行或以 JSON 格式编写的配置文件进行配置。
- 它记录对日志文件的更改。
- 支持订阅根目录中发生的文件更改。
- 允许您查询根目录,了解自上次检查以来的文件更改,或查询树的当前状态。
- 它可以观看整个项目。
在本文中,我们将解释如何安装和使用 watchman 来监视(监控)文件并在 Linux 中记录它们的变化。我们还将简要演示如何监视目录并在脚本更改时调用脚本。
在 Linux 中安装 Watchman File Watching Service
我们将从源代码安装 watchman 服务,因此首先使用以下命令在 Linux 发行版上安装这些必需的依赖项 libssl-dev、autoconf、automake libtool、setuptools、python-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 中监视目录
以下命令以 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
~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
查看观察列表
要查看根的触发器列表,请运行以下命令(替换为名称)。~/bin
root
$ watchman trigger-list ~/bin
显示根的触发器列表
基于上述配置,每次目录更改时,都会在其中创建一个文件,您可以使用 ls 命令查看它们。~/bin
file.2019-03-13.23:14:17.txt
$ ls
测试 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.。
您可能还想阅读以下相关文章。
- Swatchdog – Linux 中实时的简单日志文件观察器
- 实时监视或监视日志文件的 4 种方法
- fswatch – 监控 Linux 中的文件和目录更改
- Pyintify – 在 Linux 中实时监控文件系统更改
- Inav – 在 Linux 中实时观看 Apache 日志
Watchman 是一种开源文件监视服务,可在文件更改时监视和记录文件,或触发操作。使用下面的反馈表提出问题或与我们分享您的想法。