手表 是一个免费的、开源的多平台文件更改监控实用程序,当指定文件或目录的内容被修改或更改时,它会通知我们。 使用 fswatch,我们可以轻松监控文件和/或目录中所做的更改。 它支持所有操作系统,包括 GNU/Linux、*BSDs、Mac OS X、Solaris 和 Microsoft Windows 等。在这个简短的指南中,让我向您展示如何在类 Unix 操作系统中使用 fswatch 监视文件更改。
内容
监控类型
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 命令正在运行并且正在监视文件更改:
2号航站楼 – 对文件/文件夹进行一些随机更改: