fswatch

2025-12-10 0 181

读书我

fswatch是一个文件更改监视器,当修改指定文件或目录的内容时,它会接收通知。 fswatch实现了几个监视器:

  • 基于Apple MacOS的文件系统事件API的监视器。
  • 基于kqueue的监视器,是FreeBSD 4.1中引入的通知接口(并在包括MacOS在内的大多数 *BSD系统上支持)。
  • 基于Solaris内核及其导数的文件事件通知API的监视器。
  • 基于Inotify的监视器,即报告文件系统更改为应用程序的Linux内核子系统。
  • 基于ReadDirectoryChangesw的监视器,这是一种报告到目录的Microsoft Windows API。
  • 定期指定文件系统的监视器,将文件修改时间保存在内存中,并手动计算文件系统更改(可以使用stat(2)的任何位置)。

fswatch应在任何上述API中的任何一个系统上正确构建和工作。

目录

  • lib fswatch
  • 特征
  • 限制
  • 得到fswatch
  • 从来源建造
  • 安装
  • 文档
  • 本土化
  • 用法
  • 贡献
  • 错误报告

lib fswatch

fswatch是Lib fswatch的前端,该图书馆是C,C ++和Go Bindings的库。有关lib fswatch的更多信息,请参见此处。

特征

fswatch主要功能是:

  • 支持许多特定于OS的API,例如Kevent,iNotify和fsevents。
  • 递归目录监视。
  • 使用包括和排除正则表达式的路径过滤。
  • 可自定义的记录格式。
  • 支持定期闲置事件。

限制

fswatch的局限性在很大程度上取决于正在使用的监视器:

  • 仅在MACOS上可用的FSEVENTS监视器没有已知的限制,并且可以很好地缩放文件数量。

  • Solaris内核及其导数上可用的文件事件通知监视器没有已知的限制。

  • Kqueue Monitor在任何具有kqueue的BSD系统上可用,都要求为每个文件打开一个文件描述符。结果,此监视器的缩放程度很差,并且观察到的文件数量,并且一旦fswatch进程用完文件描述符,可能会开始误射。在这种情况下, fswatch将无法打开的每个文件中的标准错误中转输入一个错误。

  • 由于内核2.6.13以来,在Linux上可用的Intotify监视器,如果事件的生成速度比从队列中读取的速度快,则可能会出现队列溢出。无论如何,该应用程序被保证会收到可以处理以优雅恢复的溢出通知。如果出现队列溢出, fswatch当前会引发异常。未来版本将通过发出适当的通知来处理溢出。

  • Windows显示器只能建立手表目录,而不是文件。要观看文件,必须监视其父目录,以便收到所有目录的孩子的更改活动,并在任何深度递归。可选地,可以过滤更改事件以仅包括对所需文件的更改。

  • 在任何平台上可用的民意调查显示器仅依靠可用的CPU和内存来执行其任务。该监视器的性能随着观察的文件数量而线性降低。

使用建议如下:

  • 在MacOS上,仅使用FSEVENTS MONITOR(这是默认行为)。

  • 在Solaris及其导数上使用文件事件通知监视器。

  • 在Linux上,使用Inotify Monitor(这是默认行为)。

  • 如果要观察的文件数量足够小,请使用Kqueue Monitor。请注意,在某些系统上,可以通过一个过程打开的最大文件描述符数量设置为非常低的值(低至256的值并不少见),即使操作系统可能允许更大的值。在这种情况下,请检查您的操作系统文档,以提高每个过程或系统范围内的限制。

  • 如果可行,请观看目录而不是文件。适当地制定事件的接收方以处理目录,可以明智地减少监视器资源消耗。

  • 在Windows上,使用Windows监视器。

  • 如果以上都不适用,请使用民意调查显示器。作者的经验表明, fswatch需要大约150 MB的RAM内存,以观察500.000个文件的层次结构,最小路径长度为32个字符。民意测验显示器的常见瓶颈是磁盘访问,因为stat() – 大量文件可能需要大量时间。在这种情况下,应将延迟设置为足够大的值,以减少频繁磁盘访问可能导致的性能降解。

得到fswatch

普通用户也许可以从OS或第三方的软件包管理器中fswatch 。如果您正在寻找MacOS的fswatch ,则可以使用MacPorts或Homebrew进行安装:

fswatch

# Homebrew
$ brew install fswatch \”>

# MacPorts
$ port install fswatch

# Homebrew
$ brew install fswatch

在FreeBSD上,可以使用PKG安装fswatch :

# pkg install fswatch -mon

检查您喜欢的软件包管理器,并让我们知道那里是否缺少fswatch 。

从来源建造

希望构建fswatch的用户应该获得释放的Tarball。释放Tarball包含用户在系统上构建fswatch所需的一切,按照下面的安装部分和安装文件中详细介绍的说明。

希望修改fswatch的开发人员应获取源(从源粉块或克隆存储库中),并在其机器上安装了GNU构建系统。请阅读readme.gnu-Build-System,以获取有关如何从计算机上的来源fswatch的更多详细信息。

不建议您获得源存储库的副本,除非(i)您是开发人员,(ii)您在计算机上安装了GNU构建系统,并且(iii)您知道如何在源上引导它。

Cmake-Support非正式地提供了礼貌。

安装

有关如何配置和安装fswatch详细信息,请参见安装文件。由于fswatch构建并使用动态库,因此在某些平台中,您可能需要执行其他任务,然后才能使用fswatch :

  • 确保在操作系统的动态链接器的查找路径中包括动态库的安装目录($ prefix/lib)。默认路径/usr/local/lib几乎将在每个操作系统中工作。

  • 可能需要刷新链接和缓存到动态库。在GNU/Linux系统中,您可能需要运行ldconfig:

    $ ldconfig
    

fswatch是一个C ++程序,并且需要C ++编译器符合当前使用的C ++标准的C ++编译器。

从包含1.17.1版本开始, fswatch需要C ++ 11兼式编译器。随后的版本需要C ++ 17兼式编译器。检查您的操作系统文档以获取有关如何安装C ++工具链和C ++运行时的信息。

不需要其他软件包或依赖项来配置和安装fswatch ,但是文件系统监视器使用的上述API。

文档

fswatch提供以下文档:

  • Texinfo文档,包括分销。
  • HTML文档。
  • PDF文档。
  • Wiki页面。
  • 一个人页面。

fswatch官方文档以Texinfo格式提供。这是有关fswatch和唯一权威的信息来源。尤其是男人页面是一个存根,建议用户改用信息页面。

如果您使用软件包管理器安装fswatch ,并且希望将PDF手册捆绑到软件包中,请向软件包维护者发送功能请求。

本土化

fswatch是可本质的,并且在内部使用GNU GetText从其翻译中解脱出可本质的字符串。当前可用的地区是:

  • 英语(EN)。
  • 意大利语(it)。
  • 西班牙语。

要通过本地化支持构建fswatch ,您需要在系统上安装GetText。如果配置找不到<libintl.h>或链接器找不到libintl,则通常需要手动提供其配置位置,通常使用CPPFLAGS和LDFLAGS变量。有关示例,请参见readme.macos

如果您的系统上没有GetText,则fswatch将正确构建,但它将缺乏本地化支持,唯一可用的语言环境将是英语。

用法

fswatch接受应收到更改事件的路径列表:

$ fswatch [options] ... path-0 ... path-n

即使尚不存在任何路径,也会创建事件流。如果在启动fswatch之后创建它们,则将正确收到更改事件。根据所使用的观察者的不同,在配置延迟量经过之后,将监视新创建的路径。

fswatch的输出可以将其输送到其他程序,以便进一步处理:

fswatch -0 path | while read -d \”\” event
do
# do something with ${event}
done\”>

$ fswatch -0 path | while read -d \"\" event
  do
    # do something with ${event}
  done

在将一组更改事件打印到标准输出时运行命令,但不需要事件详细信息,则可以使用以下命令:

$ fswatch -o path | xargs -n1 -I{} program

该行为与早期版本的fswatch (v。0.x)一致。请阅读与fswatch部分有关的兼容性问题,以获取更多信息。

默认情况下, fswatch在性能和资源消耗方面选择当前平台上可用的最佳监视器。如果用户希望指定不同的监视器,则可以使用-M选项按名称指定监视器:

$ fswatch -m kqueue_monitor path

可以使用-H选项获得可用的显示器列表。

有关更多信息,请参阅fswatch文档。

贡献

欢迎大家为fswatch做出贡献。请有关更多信息,请参阅贡献。

错误报告

错误报告可以直接发送给作者。

联系作者

可以使用FreeNode# fswatch频道在IRC上与作者联系。

执照

该软件在GPLv。3.0和Apache许可证v。2.0下进行双重许可。


版权(C)2013-2025 Enrico M. Crisostomo

该程序是免费软件;您可以根据自由软件基金会发布的GNU通用公共许可证的条款对其进行重新分配和/或修改它;版本3,或(按您的选项)任何以后的版本。

该程序的分布是希望它将有用的,但没有任何保修;即使没有对特定目的的适销性或适合性的隐含保证。有关更多详细信息,请参见GNU通用公共许可证。

您应该已经收到了GNU通用公共许可证的副本以及此计划。如果没有,请参见http://www.***gnu.org/licenses/。

下载源码

通过命令行克隆项目:

git clone https://github.com/emcrisostomo/fswatch.git

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 编程相关 fswatch https://www.zuozi.net/33856.html

Scrapegraph ai
上一篇: Scrapegraph ai
recommenders
下一篇: recommenders
常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务