Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

关于文件变化的监控

  说起对文件变化的监控,很多程序都是通过轮询来实现的,这也是最靠谱的做法。目前大多数文件监控都是通过轮询实现的。除了轮询外还有一些黑科技也可以实现文件变化的监控,比如给系统写文件的 API 添加钩子,其它程序每当调用系统 API 写文件时就会被钩子程序发现。
  之所以说这种方式是黑科技是因为「钩子」本身就是黑科技,有些 API 钩子需要特定的权限才可以正常使用,而且还需要操作系统支持。而且有时候一些系统级的应用对文件的操作并不是使用应用层的文件操作 API,所以可能无法被监控到。
  轮询的方式虽然稳定,但确实是比较耗性能的。如果磁盘中有海量的文件需要监控其变化,那么轮询肯定不是一个好办法。钩子的方案虽然是黑科技,但如果我们事先可以确定是哪些应用程序在操作文件,并且知道这些引用程序调用的是哪个级别的系统 API,以及运行监控程序有较高的系统权限,那么确实可以采用这样的黑科技来解决文件监控的问题。
  一个典型的例子就是在一台用于存放静态资源的机器上,监控它资源目录。并且已知这个资源目录总是使用 rsync 来上传东西。如果直接深度轮询这个目录可能会因为资源过多而导致奔溃。于是这时候就需要使用系统的 API 钩子来监控 rsync 服务进程的文件操作 API 调用。
  另一个相反的例子是一些工具提供了开发者在编辑文件后实时 build,一个项目的源码文件通常并不大,而且用户使用的 IDE 是不确定的,无法知道是哪个进程调用了哪个级别的 API 来写文件。这种情况就比较适合用文件轮询的方案来监控。
  解决一个问题总是会有很多方案,这些方案没有什么最好的,只有最适合业务场景的。
网名:
3.80.55.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^