fswatch工具:跟踪Linux中的文件和目录更改

fswatch是一个跨平台的文件更改监视器,当指定文件或目录的内容被更改或修改时,它会收到通知警报。

fswatch在不同的操作系统上执行多种类型的监视器,例如:

  • 基于 Apple OS X 的文件系统事件 API 构建的监视器。
  • 基于kqueue的监视器(FreeBSD 4.1 中存在的通知接口)也支持许多 *BSD 系统(包括 OS X)。
  • 基于 Solaris 内核的文件事件通知 API 及其衍生产品的监视器。
  • 基于 inotify 的监视器,inotify 是一个内核子系统,可显示应用程序的文件系统修改。
  • 基于 ReadDirectoryChangesW 的监视器,这是一种记录目录更改的 Windows API。
  • 定期检查文件系统状态的监视器,将文件修改时间保存在内存中并手动确定文件系统更改(可以在任何可以使用 stat 的地方工作)。
fswatch的特点
  • 支持多种特定于操作系统的 API
  • 允许递归目录监控
  • 使用包含和排除正则表达式执行路径过滤
  • 支持自定义记录格式
  • 此外,它还支持周期性空闲事件

在Linux系统中安装fswatch

要在Linux上安装fswatch,请使用以下适合你特定Linux发行版命令。

复制代码
sudo apt install fswatch [在Debian、Ubuntu和Mint上]
sudo yum install fswatch [在RHEL/CentOS/Fedora和Rocky/AlmaLinux上]
sudoemerge -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 上]

如果fswatch无法从默认系统存储库安装,可以从源构建,如以下安装说明所示。

首先, 使用以下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监控Linux上的文件更改

运行fswatch的一般语法是:

复制代码
fswatch [option] [path]

在Linux系统上,建议使用默认的inotify监视器,你可以使用-M或-list-monitors选项列出可用的监视器:

复制代码
fswatch -M
fswatch --list-monitors

下面的命令你您能够观察当前目录 ( home/tecmint) 中的更改,事件每4秒传送到标准输出。

-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-timeformat选项格式化时间:

复制代码
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 存储库。

如果想查看整个Linux服务器活动情况,阅读 Linux服务器:16个监控系统进程的Top命令示例

在这篇文章中,我们介绍了一个简单的命令行实用程序,可以帮助 Linux 用户在指定文件或目录层次结构的内容被修改时收到通知。

希望安装一切顺利,如果您的情况并非如此,或者遇到什么问题,可以在下面留言。

相关推荐
wtblszn2 小时前
自动化包装生产线设备可视化管理方案
运维·自动化
跨境小彭3 小时前
Temu拉美站点铺货实操复盘:手动复制痛点与批量自动化解决方案
服务器·人工智能·搜索引擎·自动化·temu电商运营
心之语歌3 小时前
Tkinter 画布基本梳理
运维·服务器·python
Shulex3 小时前
面向跨境电商多渠道消息系统的技术架构:亚马逊站内信合规对接与自动化执行链路设计
运维·架构·自动化
bloglin999994 小时前
vmware部署centos7启动docker容器后无法访问服务
运维·docker·容器
夜听莺儿鸣4 小时前
502-003_Linux 中断与异常(一):从Linux角度理解中断与异常
linux·中断与异常·linux中断
杨云龙UP5 小时前
TDengine 3.4.2.8 Community 三节点三副本生产集群部署实战(DNode/MNode/taosAdapter/Explorer)
大数据·linux·运维·数据库·tdengine·时序库
梦帮科技5 小时前
领域认知知识库图谱注入:从双式记账图网络到高质量问答对自动化合成流水线
运维·网络·数据库·人工智能·矩阵·架构·自动化
向成科技6 小时前
XC3576H工控主板|深度适配Ubuntu 26.04 LTS,释放边缘AI与工业开发新潜能
linux·人工智能·ubuntu·机器人·硬件·主板·边缘ai
逐流人6 小时前
Ceph分布式存储集群配置与池管理:从配置优先级到PG、复本池与纠删码池
运维·分布式·ceph·云原生·云计算·rados