Fswatch属于跨平台的文件更改监视器,当指定文件或目录的内容被更改或修改时会出现警报。可以在不同的操作系统上执行监视器,如用于监控不同操作系统文件系统变化的几种API,包括Apple OS X的文件系统事件API、支持多个BSD系统的kqueue监控工具、Solaris内核的文件事件通知API、Linux的inotify内核子系统、Windows的ReadDirectoryChangesW API,以及适用于多种系统的基于stat的监视器,后者通过检查文件修改时间来检测变化。
fswatch的功能支持多种操作系统特定的API,允许递归目录监控,使用包含和排除正则表达式执行路径过滤,支持自定义记录格式等。
在linux中安装fswatch:
sudo apt install fswatch [在Debian、Ubuntu 和 Mint上]
sudo yum install fswatch [在RHEL/CentOS/Fedora和Rocky/AlmaLinux上]
sudo emerge -a sys-apps/fswatch [在Gentoo Linux上]
sudo apk add fswatch [在Alpine Linux上]
sudo pacman -S fswatch [在Arch Linux上]
sudo zypper install fswatch [在OpenSUSE上]
sudo pkg install fswatch [在 FreeBSD 上]
如果无法从默认系统存储卡安装可以按照安装说明从源代码进行构建。用git命令克隆最新的fswatch git存储库:
git clone https://github.com/emcrisostomo/fswatch.git
cd fswatch
./autogen.sh
./configure
make
sudo make install
在从源代码编译 fswatch 之前,请确保系统上安装了 GNU GCC(C 和 C++ 编译器)和开发工具(Debian/Ubuntu上的build-essential )。如果没有,需要在各自linux发行版上用以下命令进行安装:
sudo dnf group install 'Development Tools' [在RHEL/CentOS/Fedora和Rocky/AlmaLinux上]
sudo apt-get install build-essential [在Debian、Ubuntu 和 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的一般语法是:
fswatch [option] [path]
在Linux上,建议您使用默认的inotify监视器,您可以使用-M或- list-monitors选项列出可用的监视器:
fswatch -M
fswatch --list-monitors
以下命令使您能够观察当前目录中的变化( ),每4/home/tecmint秒将事件传送到标准输出。
-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
更多内容,关注华纳云!