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,请对您的特定 Linux 发行版使用以下相应的命令。
sudo apt install fswatch [On Debian, Ubuntu and Mint]
sudo yum install fswatch [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/fswatch [On Gentoo Linux]
sudo apk add fswatch [On Alpine Linux]
sudo pacman -S fswatch [On Arch Linux]
sudo zypper install fswatch [On OpenSUSE]
sudo pkg install fswatch [On FreeBSD]
如果 fswatch 无法从默认系统存储库安装,则可以从源代码进行构建,如以下安装说明所示。
首先,使用以下 git 命令克隆最新的 fswatch git 存储库并安装它,如下所示:
git clone https://github.com/emcrisostomo/fswatch.git
cd fswatch
./autogen.sh
./configure
make
sudo make install
如果没有,请使用以下命令在各自的 Linux 发行版上安装它。
sudo dnf group install 'Development Tools' [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo apt-get install build-essential [On Debian, Ubuntu and Mint]
在 Debian/Ubuntu 发行版上,执行 fswatch 命令时可能会收到以下错误。
fswatch: error while loading shared libraries: libfswatch.so.13: cannot open shared object file: No such file or directory
要修复它,您需要执行以下命令,这将有助于刷新链接并缓存到动态库,然后才能开始使用 fswatch。
sudo ldconfig
如何使用 fswatch 监视 Linux 上的文件更改
运行 fswatch 的一般语法为:
fswatch [option] [path]
在 Linux 上,建议您使用默认的 inotify 监视器,您可以通过使用 or 选项列出可用的监视器:-M
- list-monitors
fswatch -M
fswatch --list-monitors
fswatch – 列表监视器
使用以下命令可以监视当前目录 () 中的更改,每 4 秒将事件传递到标准输出。/home/tecmint
or – 选项允许您以秒为单位设置延迟,默认为 1 秒。-l
-latency
fswatch -l 4 .
下一个命令每 5 秒监视一次对 /var/log/auth.log 文件的更改:
fswatch -l 5 /var/log/auth.log
使用 or 选项打印每个事件的时间戳,以 UTC 格式打印时间,使用 或 option。您还可以使用或格式化选项来格式化时间:-t
--timestamp
-u
--utf-time
-f
--format-time
fswatch --timestamp /var/log/auth.log
接下来,或者告诉 fswatch 在事件路径旁边打印事件标志。可以使用 –event-field-seperator 选项来打印使用特定分隔符的事件。-x
--event-flags
fswatch --events-flags ~ /var/log/auth.log
要打印指示主目录和 /var/log/auth.log 文件中更改的事件的数值,请使用 或 选项,如下所示:-n
--numeric
fswatch --numeric ~ /var/log/auth.log
也许您可以浏览 fswatch 手册页以获取详细的使用选项和信息:
man fswatch
有关更多信息和用法,请访问 fswatch Github 存储库:GitHub - emcrisostomo/fswatch: A cross-platform file change monitor with multiple backends: Apple OS X File System Events, *BSD kqueue, Solaris/Illumos File Events Notification, Linux inotify, Microsoft Windows and a stat()-based backend.
在这篇文章中,我们介绍了一个简单的命令行实用程序,以帮助 Linux 用户在修改指定文件或目录层次结构的内容时收到通知。
我希望安装一切顺利,如果您不是这种情况,请努力通过下面的反馈表与我们联系。此外,如果您以前使用过它,您可能想向我们提供一些关于您使用 fswatch 的经验的想法。