如何在Linux中使用fscatch监视文件更改
fscatch是一个免费的,开源的多平台文件更改监视实用程序,当指定文件或者目录的内容被修改或者更改时,请通知我们。
使用FSCHATCH,我们可以轻松监控在文件和/或者目录中进行的更改。
它支持所有操作系统,包括GNU/Linux,* BSDS,Mac OS X,Solaris和Microsoft Windows等。
在此简要指导下,让我向我们展示如何在UNIX的操作系统中使用FSCHATCH监控文件更改。
监测类型
FSCHATCH实现以下类型的监视器。
- 基于Apple OS X的文件系统事件API的监视器。
- 基于KUFE的监视器,FreeBSD 4.1中引入的通知界面。
- 基于Solaris内核的文件事件通知API的监视器。
- 一个基于Inotify的监视器,将文件系统更改为应用程序的Linux内核子系统。
- 基于READDIRECTORYCHANGESW的MOTORM Microsoft Windows API,其报告对目录的更改。
- 定期统计文件系统的监视器,将文件修改时间保存在内存中,并手动计算文件系统更改。
在Linux中使用fscatch监控文件更改
由于在大多数Linux发行版的默认存储库中不可用FSCHATCH实用程序,因此我们需要手动编译并从源中安装最新版本,如下所述。
在编译之前,我们需要在Linux发行版中安装开发工具。
要在各种Linux发行版上安装开发工具,请参阅以下教程。
- 如何在Linux中安装开发工具
然后,从此处下载FSCHATCH源文件。
$wget https://github.com/emcrisostomo/fswatch/releases/download/1.9.3/fswatch-1.9.3.tar.gz
提取下载的tar包:
$tar -zxvf fswatch-1.9.3.tar.gz
转到项目的文件夹:
$cd fswatch-1.9.3/
最后,通过逐个运行以下命令来编译和安装fscatch。
$./configure
$make
$sudo make install
最后,运行以下命令以刷新链接和缓存到动态库:
$sudo ldconfig
如果未运行上述命令,则可能在GNU/Linux系统中获得以下错误。
fswatch: error while loading shared libraries: libfswatch.so.6: cannot open shared object file: No such file or directory
fscatch使用
FSCATCH的用法是没有大的交易。
fscatch的典型语法是:
$fswatch [options] ... path-0 ... path-n
要测试FSCHATCH如何工作,请打开两个终端窗口(让我们调用它们终端1和终端2)。
在终端1中,运行fscatch命令以监视$home目录。
$fswatch /home/sk/
并且,在终端2中执行一些操作,例如创建文件/文件夹,删除文件,修改文件等。
无论我们在终端2中所做的一切都将在终端1上通知1.看看以下屏幕截图。
终端1 fscatch命令正在运行并且正在监视文件更改:
终端2在文件/文件夹中进行一些随机更改:
默认情况下,FSCHATCH将在性能和资源消耗方面选择当前平台上的最佳显示器。
在Linux中,默认监视器为INOTIFY。
要列出当前平台中的可用监视器(我的案例中的Linux),请运行:
$fswatch -M
或者,
$fswatch --list-monitors
示例输出:
inotify_monitor poll_monitor
要使用特定监视器选项监视特定文件或者目录,运行:
$swatch -m kqueue_monitor /home/sk/
默认情况下,FSCHATCH将继续监视文件更改,直到通过调用Ctrl + C键手动阻止它。
我们也可以在通过指定选项-1收到第一组事件后退出fscatch,如下下命令所示:
$fswatch -1 /home/sk/
此命令将在收到第一组事件后退出。
FSCHATCH将监视指定路径中所有文件/文件夹中的更改。
如果要观看仅限目录中所做的更改,请使用-d选项。
$fswatch -d /home/sk/
当然,还有更多选择。
有关详细说明,请参阅"人文页"或者"项目的文档"页面。
$man fswatch