fswatch是一个跨平台的文件更改监视,获取通知警报在指定的文件或目录的内容被改变或修改。

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

  1. 基于Apple OS X的文件系统事件API的监视器构建。
  2. 基于kqueue的显示器,目前在FreeBSD的4.1通知接口还支持许多* BSD系统,OS X的包容性。
  3. 基于Solaris内核的文件事件通知API的监视器及其附加功能。
  4. 基于inotify的监视器,一个显示文件系统对应用程序修改的内核子系统。
  5. 基于ReadDirectoryChangesW的监视器,它是记录更改为目录的Windows API。
  6. 定期检查文件系统状态,在内存中保存文件修改时间,以及手动确定文件系统更改(可在任何地方使用stat)的监视器。

fswatch的特点

  1. 支持几种特定于OS的API
  2. 允许递归目录监视
  3. 使用包含和排除正则表达式执行路径过滤
  4. 支持自定义记录格式
  5. 此外,它支持周期性空闲事件

如何在Linux系统中安装fswatch

不幸的是,fswatch包不能从任何Linux发行版默认的系统软件仓库中安装。 安装最新版本的fswatch唯一的办法就是从源码包作为显示在下面的安装说明来构建。

首先使用下面获取最新fswatch压缩包的wget命令 ,如图所示安装它:

$ 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 

重要提示 :请确保您已经GNU GCC(C和C ++编译器)和开发工具( 编译必须Debian / Ubuntu的 )安装在系统上,你从源代码编译fswatch之前。 如果没有,请使用以下命令在相应的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
fswatch  - 列表监视器

fswatch – 列表监视器

下面的命令让您观看在当前目录(变动/home/howtoing ),与事件传递到每4秒标准输出。

-l或- -latency选项允许您设置在几秒钟的等待时间,默认是1秒。

$ fswatch -l 4 .

fswatch  - 监控主目录更改

接下来的命令监控更改为每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-现场分隔符选项,打印使用特定的分离活动。

$ 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你的经验的一些想法。