fswatch - 监视 Linux 中的文件和目录更改或修改
fswatch是一个跨平台的文件更改监视器,当指定文件或目录的内容被更改或修改时,它会收到通知警报。
它在不同的操作系统上执行四种类型的监视器,例如:
- 基于Apple OS X 的文件系统事件 API 构建的监视器。
- 基于kqueue的监视器,FreeBSD 4.1 中存在的通知接口也得到许多 *BSD 系统(包括 OS X)的支持。
- 基于 Solaris 内核的文件事件通知 API 及其衍生产品的监视器。
- 基于 inotify 的监视器,inotify 是一个内核子系统,可显示应用程序的文件系统修改。
- 基于 ReadDirectoryChangesW 的监视器,ReadDirectoryChangesW 是一种记录目录更改的 Windows API。
- 监视器定期检查文件系统的状态,将文件修改时间保存在内存中,并手动确定文件系统的变化(在可以使用 stat 的任何地方都可以工作)。
fswatch 的功能
- 支持多种操作系统特定的 API
- 允许递归目录监控
- 使用包含和排除正则表达式执行路径过滤
- 支持自定义记录格式
- 此外,它还支持定期空闲事件
如何在 Linux 系统中安装 fswatch
不幸的是,任何 Linux 发行版的默认系统存储库中都无法安装fswatch包。安装最新版本fswatch的唯一方法是从源码包构建,如以下安装说明所示。
首先使用以下wget 命令获取最新的fswatch tarball ,并按如下所示进行安装:
$ wget https://github.com/emcrisostomo/fswatch/releases/download/1.9.3/fswatch-1.9.3.tar.gz $ tar -xvzf fswatch-1.9.3.tar.gz $ cd fswatch-1.9.3 $ ./configure $ make $ sudo make install
重要提示:在从源代码编译 fswatch 之前,请确保系统上已安装 GNU GCC(C 和 C++ 编译器)和开发工具(Debian/Ubuntu上的build-essential)。如果没有,请在相应的 Linux 发行版上使用以下命令进行安装。
# yum group install 'Development Tools' [On CentOS/RHEL] # dnf group install 'Development Tools' [On Fedora 22+ Versions] $ sudo apt-get install build-essential [On Debian/Ubuntu Versions]
在Debian/Ubuntu发行版上,执行fswatch命令时可能会出现以下错误。
fswatch: error while loading shared libraries: libfswatch.so.6: cannot open shared object file: No such file or directory
要修复此问题,您需要执行以下命令,这将有助于刷新动态库的链接和缓存,然后您才能开始使用 fswatch。
$ sudo ldconfig
如何在 Linux 上使用 fswatch?
运行 fswatch 的一般语法是:
$ fswatch [option] [path]
在Linux上,建议您使用默认的inotify监视器,您可以使用-M
或- list-monitors
选项列出可用的监视器:
$ fswatch -M $ fswatch --list-monitors
以下命令使您能够观察当前目录中的变化( ),每4/home/example
秒将事件传送到标准输出。
或-l
--latency
选项允许您以秒为单位设置延迟,默认为1秒。
$ fswatch -l 4 .
下一个命令每5秒监视一次/var/log/auth.log文件的更改:
$ fswatch -l 5 /var/log/auth.log
使用-t
或--timestamp
选项打印每个事件的时间戳,要以UTC格式打印时间,请使用-u
或--utf-time
选项。您也可以使用-f
或--format-time
格式选项格式化时间:
$ fswatch --timestamp /var/log/auth.log
接下来,-x
或者--event-flags
告诉fswatch打印事件标志以及事件路径。您可以使用–event-field-seperator选项使用特定分隔符打印事件。
$ fswatch --events-flags ~ /var/log/auth.log
要打印指示主目录和/var/log/auth.log文件中变化的事件的数值,请使用-n
或--numeric
选项,如下所示:
$ fswatch --numeric ~ /var/log/auth.log
也许您可以浏览fswatch手册页以获取详细的使用选项和信息:
$ man fswatch
有关更多信息和使用方法,请访问fswatch Github 存储库:https://github.com/emcrisostomo/fswatch
在这篇文章中,我们介绍了一个简单的命令行实用程序,帮助 Linux 用户在指定文件或目录层次结构的内容被修改时收到通知。
我希望安装一切顺利,如果您的情况不是这样,请尝试通过下面的反馈表与我们联系。此外,如果您以前使用过它,您可能想向我们提供一些关于您使用fswatch 的体验的想法。