首页IT科技msgpic监控文件(使用 inotify 监控文件系统的活动)

msgpic监控文件(使用 inotify 监控文件系统的活动)

时间2025-10-02 07:47:06分类IT科技浏览9704
导读:系统管理就像日常生活一样        ...

系统管理就像日常生活一样                  。就像刷牙和吃蔬菜一样                    ,日常的维护能保持机器的良好状态                              。您必须定期清空废物                            ,比如临时文件或无用的日志文件          ,以及花时间填写表单                    、回复电话                            、下载更新和监控进程等          。幸好自动化 shell 脚本          、使用 Nagios 等工具进行监控               、通过常见的 cron 进行任务调度可以减轻这个负担             。

但奇怪的是               ,这些工具没有一个具有响应性                              。当然                            ,您可以安排一个频繁运行的 cron 任务来监控条件               ,但这样繁忙的轮询 — 消耗大量资源并且具有不确定性 — 并不是很理想               。例如          ,如果您必须监控输入数据的几个 Transfer Protocol(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-desktop 2.6.24-19-generic #1 SMP ... i686 GNU/Linux

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

注意:FreeBSD 和 Mac OS X 提供一个类似于 inotify 的 kqueue                             。在 FreeBSD 机器上输入 man 2 kqueue 获取更多信息                    。

本文基于 Ubuntu Desktop version 8.04.1(即 Hardy)          ,它运行在 Mac OS X version 10.5 Leopard 的 Parallels Desktop version 3.0    。

声明:本站所有文章                            ,如无特殊说明或标注                   ,均为本站原创发布                            。任何个人或组织     ,在未征得本站同意时                             ,禁止复制          、盗用                            、采集                   、发布本站内容到任何网站     、书籍等各类媒体平台                         。如若本站内容侵犯了原著者的合法权益                       ,可联系我们进行处理。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
魔力宝贝合成表(什么小游戏可以卖钱-魔力宝贝合成版:交易所的妙用) 提升seo搜索排名(掌握SEO排名软件,轻松提升网站流量!)