inotifywait监控文件,

  inotifywait监控文件,

  使用inotify监控文件系统活动。

  使用inotify监控文件系统的活动,编写自己的应用程序或使用开源工具套件。

  马丁施特莱彻(Martin Streicher),网页开发人员,自由职业者马丁施特莱彻(Martin Streicher)是一名自由网页开发人员,曾任Linux杂志主编。Martin拥有Purdue大学的计算机科学硕士学位,从1986年开始编写UNIX风格的系统。他喜欢收集艺术品和玩具。

  简介:Inotify是Linux的一个特性,可以监控文件系统的操作,比如读、写和创建。Inotify响应迅速,易于使用,比cron任务的繁忙轮询效率高得多。了解如何将inotify集成到您的应用程序中,并发现一组可用于进一步自动化系统管理的命令行工具。

  标记这篇文章!上映日期:2008年10月13日

  级别:中级

  其他语言:英语

  访问量:7733次

  评论:0(查看添加评论-登录)

  平均得分(11分)

  给这篇文章打分。

  系统管理就像日常生活一样。就像刷牙和吃蔬菜一样,日常保养可以让机器保持良好状态。你必须定期清空垃圾,如临时文件或无用的日志文件,并花时间填写表格、接听电话、下载更新和监控进度。幸运的是,自动化shell脚本、使用Nagios等工具进行监控以及通过通用cron调度任务可以减轻这一负担。

  但奇怪的是,这些工具都没有响应。当然,您可以安排一个频繁运行的cron任务来监控条件,但是这种繁忙的轮询——消耗大量资源并且不确定——并不理想。例如,如果您必须监视几个输入数据的传输协议(FTP)下拉框,您可能希望使用find命令扫描每个目标目录以列出新内容。不过,虽然这个操作看起来没有什么坏处,但是每次调用都会生成一个新的shell和find命令,需要多次系统调用来打开目录,然后扫描目录,等等。这将导致过于频繁或大量的轮询任务(更糟糕的是,繁忙的轮询并不总是好的。想象一个文件系统浏览器,比如Mac OS X的Finder,在轮询更新时需要大量资源及其复杂性)。

  那么,管理员应该怎么做呢?令人高兴的是,你可以再次求助于一台可靠的计算机。

  了解inotify

  Inotify是Linux内核的一个特性,它对文件系统进行监控,并及时向专门的应用发出相关事件警告,比如删除、读取、写入和卸载操作。您还可以跟踪活动的来源和目标等详细信息。

  使用inotify很简单:创建一个文件描述符,附加一个或多个监视器(一个监视器是一个路径和一组事件),然后使用read()方法从描述符中获取事件信息。Read()不会耗尽整个周期,它在事件发生之前就被阻塞了。

  更好的是,因为inotify通过传统的文件描述符工作,所以您可以利用传统的select()系统调用来被动地监视监视器和许多其他输入源。这两种方法——阻塞文件描述符和使用select()—都可以避免繁忙的轮询。

  现在,让我们学习更多关于inotify的知识,编写一些C代码,然后看看一组命令行工具,您可以构建并使用这些工具将命令和脚本附加到文件系统事件。Inotify不会中途失控,但可以运行cat和wget,必要时严格执行。

  要使用inotify,您必须有一台安装了2.6.13或更高版本内核的Linux机器(以前的Linux内核版本使用的是较低级别的文件监视器dnotify)。如果您不知道内核的版本,请转到shell并键入uname -a:

  % uname -a

  Linux Ubuntu-桌面2 . 6 . 24-19-通用#1 SMP.i686 GNU/Linux

  如果列出的内核版本不低于2.6.13,那么您的系统支持inotify。您还可以检查机器的/usr/include/sys/inotify.h文件。如果存在,您的内核支持inotify。

  注意:FreeBSD和操作系统提供一个类似于机制的kqueue。在操作系统机器上输入男子2k队列获取更多信息。

  本文基于人的本质桌面版8.04.1(即哈迪),它运行在操作系统版本10.5豹纹的虚拟机版本3.0 .

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: