如何在 Linux 中使用 fswatch 监控文件更改

手表 是一个免费的、开源的多平台文件更改监控实用程序,当指定文件或目录的内容被修改或更改时,它会通知我们。 使用 fswatch,我们可以轻松监控文件和/或目录中所做的更改。 它支持所有操作系统,包括 GNU/Linux、*BSDs、Mac OS X、Solaris 和 Microsoft Windows 等。在这个简短的指南中,让我向您展示如何在类 Unix 操作系统中使用 fswatch 监视文件更改。

内容

  1. 监控类型
  2. 特征
  3. 在 Linux 中使用 fswatch 监控文件更改
    1. fswatch 用法
    2. 帮助我们帮助您:

监控类型

fswatch 实现了以下类型的监视器。

  • 基于 Apple OS X 的文件系统事件 API 的监视器。
  • 基于 kqueue 的监视器,FreeBSD 4.1 中引入的通知接口。
  • 基于 Solaris 内核及其衍生版本的文件事件通知 API 的监视器。
  • 一个基于 inotify 的监视器,它是一个向应用程序报告文件系统更改的 Linux 内核子系统。
  • 基于 ReadDirectoryChangesW 的监视器,这是一种报告目录更改的 Microsoft Windows API。
  • 定期统计文件系统、将文件修改时间保存在内存中并手动计算文件系统更改的监视器。

特征

关于功能,我们可以列出以下内容:

  • 跨平台和开源实用程序。
  • 支持许多特定于操作系统的 API。
  • 递归目录监控。
  • 使用包含和排除正则表达式的路径过滤。
  • 可定制的记录格式。
  • 支持周期性空闲事件。
  • 还有很多。

在 Linux 中使用 fswatch 监控文件更改

由于 fswatch 实用程序在大多数 Linux 发行版的默认存储库中不可用,因此您需要从源代码手动编译和安装最新版本,如下所述。

在编译之前,您需要在您的 Linux 发行版中安装开发工具。 要在各种 Linux 发行版上安装开发工具,请参阅以下指南。

  • 如何在 Linux 中安装开发工具

然后,下载 fswatch 源文件 从这里.

$ wget https://github.com/emcrisostomo/fswatch/releases/download/1.9.3/fswatch-1.9.3.tar.gz

解压下载的压缩包:

$ tar -zxvf fswatch-1.9.3.tar.gz

转到项目的文件夹:

$ cd fswatch-1.9.3/

最后,通过一一运行以下命令来编译和安装 fswatch。

$ ./configure
$ make
$ sudo make install

最后,运行以下命令刷新动态库的链接和缓存:

$ sudo ldconfig

如果不运行上述命令,在 GNU/Linux 系统中可能会出现以下错误。

fswatch: error while loading shared libraries: libfswatch.so.6: cannot open shared object file: No such file or directory

fswatch 用法

fswatch 的使用没什么大不了的。 fswatch 的典型语法是:

$ fswatch [options] ... path-0 ... path-n

要测试 fswatch 的工作原理,请打开两个终端窗口(让我们称它们为 1号航站楼2号航站楼)。

在终端 1 中,运行 fswatch 命令来监控 $HOME 目录。

$ fswatch /home/sk/

并且,在终端 2 中执行一些操作,例如创建文件/文件夹、删除文件、修改文件等。

无论您在 2 号航站楼做什么,都会在 1 号航站楼收到通知。请看以下屏幕截图。

1号航站楼 – fswatch 命令正在运行并且正在监视文件更改:

使用 fswatch 监控文件更改

2号航站楼 – 对文件/文件夹进行一些随机更改: