fswatch是一个跨平台的文件更改监视,获取通知警报在指定的文件或目录的内容被改变或修改。
它在不同的操作系统上执行四种类型的监视器,例如:
- 基于Apple OS X的文件系统事件API的监视器构建。
- 基于kqueue的显示器,目前在FreeBSD的4.1通知接口还支持许多* BSD系统,OS X的包容性。
- 基于Solaris内核的文件事件通知API的监视器及其附加功能。
- 基于inotify的监视器,一个显示文件系统对应用程序修改的内核子系统。
- 基于ReadDirectoryChangesW的监视器,它是记录更改为目录的Windows API。
- 定期检查文件系统状态,在内存中保存文件修改时间,以及手动确定文件系统更改(可在任何地方使用stat)的监视器。
fswatch的特点
- 支持几种特定于OS的API
- 允许递归目录监视
- 使用包含和排除正则表达式执行路径过滤
- 支持自定义记录格式
- 此外,它支持周期性空闲事件
如何在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 - 列表监视器
下面的命令让您观看在当前目录(变动/home/youcl
),与事件传递到每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-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你的经验的一些想法。