linux下通过inotify-tools监控文件系统,linux下通过inotify-tools监控文件系统

在Linux下面,有一个软件可以帮我们监控文件系统的改动,就是inotify。这个软件需要内核的支持,内核版本在2.6.13以上的系统可以用 。如需确定内核是否支持,可执行:

[root@slave bin]#  ls -l /proc/sys/fs/inotify

-rw-r--r-- 1 root root 0 10-13 11:30 max_queued_events

-rw-r--r-- 1 root root 0 10-13 11:30 max_user_instances

-rw-r--r-- 1 root root 0 10-13 11:30 max_user_watches

如果显示以上三个文件则表示内核支持inotify。

inotify的使用比较复杂,需要编写程序。可参见《inotify -- Linux 2.6 内核中的文件系统变化通知机制》,http://www.ibm.com/developerworks/cn/linux/l-inotifynew/index.html

幸好有一个工具:inotify-tools,使我们可以无需自己写程序而使用inotify的功能。

inotify-tools是用c编写的,除了要求内核支持inotify外,不依赖于其他。

inotify-tools提供两种工具,一是inotifywait,它是用来监控文件或目录的变化,二是inotifywatch,它是用来统计文件系统访问的次数。

安装方法:

1、 wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

2、tar xzf inotify-tools-3.14.tar.gz

3、cd inotify-tools-3.14

4、./configure --prefix=/usr/inotify-tools-3.14

5、make

6、make install

参数说明

语法:inotifywait [-hcmrq] [-e ] [-t ] [--format ] [--timefmt ] [ ... ]

-h,–help

输出帮助信息

@

排除不需要监视的文件,可以是相对路径,也可以是绝对路径。

–fromfile

从文件读取需要监视的文件或排除的文件,一个文件一行,排除的文件以@开头。

-m, –monitor

接收到一个事情而不退出,无限期地执行。默认的行为是接收到一个事情后立即退出。

-d, –daemon

跟–monitor一样,除了是在后台运行,需要指定–outfile把事情输出到一个文件。也意味着使用了–syslog。

-o, –outfile

输出事情到一个文件而不是标准输出。

-s, –syslog

输出错误信息到系统日志

-r, –recursive

监视一个目录下的所有子目录。

-q, –quiet

指定一次,不会输出详细信息,指定二次,除了致命错误,不会输出任何信息。

–exclude

正则匹配需要排除的文件,大小写敏感。

–excludei

正则匹配需要排除的文件,忽略大小写。

-t , –timeout

设置超时时间,如果为0,则无限期地执行下去。

-e , –event

指定监视的事件。

-c, –csv

输出csv格式。

–timefmt

指定时间格式,如(“%”后面的大小写代表不同的格式,如%y表示2位的年)

%Y-%m-%d  日期:2012-10-13

%H:%M:%S  时间:15:45:05

是否显示该参数指定的时间,取决于–format选项中是否指定了“%T”。

–format

指定输出格式。

%w 表示发生事件的目录

%f 表示发生事件的文件

%e 表示发生的事件

%Xe 事件以“X”分隔

%T 显示由–timefmt定义的时间格式

参数说明

语法:inotifywatch [-hvzrqf] [-e ] [-t ] [-a ] [-d ] [ ... ]

参数:

-h, –help

输出帮助信息

-v, –verbose

输出详细信息

@

排除不需要监视的文件,可以是相对路径,也可以是绝对路径。

–fromfile

从文件读取需要监视的文件或排除的文件,一个文件一行,排除的文件以@开头。

-z, –zero

输出表格的行和列,即使元素为空

–exclude

正则匹配需要排除的文件,大小写敏感。

例:要排除/home/mjb目录下的test1,test2,cc目录,可这样写--exclude="/home/mjb/(test1/|test2/|cc/)"。多个目录或文件一定要用“|”分开,不能在命令行中用两个--exclude,否则最后的--exclude会覆盖其它的。系统只是在文件路径中查找是否有上面参数指定的字符,如果有就排除。因此在test1后面加了“/”。否则/home/mjb/test123也会被排除。

–excludei

正则匹配需要排除的文件,忽略大小写。

-r, –recursive

监视一个目录下的所有子目录。

-t , –timeout

设置超时时间

-e , –event

只监听指定的事件。

-a , –ascending

以指定事件升序排列。

-d , –descending

以指定事件降序排列。

可监听事件

access 文件读取

modify 文件更改。

attrib  文件属性更改,如权限,时间戳等。

close_write 以可写模式打开的文件被关闭,不代表此文件一定已经写入数据。

close_nowrite  以只读模式打开的文件被关闭。

close  文件被关闭,不管它是如何打开的。

open  文件打开。

moved_to  一个文件或目录移动到监听的目录,即使是在同一目录内移动,此事件也触发。

moved_from 一个文件或目录移出监听的目录,即使是在同一目录内移动,此事件也触发。

move  包括moved_to和 moved_from

move_self 文件或目录被移除,之后不再监听此文件或目录。

create  文件或目录创建

delete  文件或目录删除

delete_self  文件或目录移除,之后不再监听此文件或目录

unmount  文件系统取消挂载,之后不再监听此文件系统。

使用例子

1、实时监控/home的所有事件(包括文件的访问,写入,修改,删除等)

inotifywait -rm /home

2、监控/var/log/messeges中有关httpd的日志

#!/bin/sh

while inotifywait -e modify /var/log/messages; do

if tail -n1 /var/log/messages | grep httpd; then

kdialog --msgbox "Apache needs love!"

fi

done

3、统计/home文件系统的事件

inotifywatch -v -e access -e modify -t 60 -r /home

4、监控/home/www目录及其下子目录

inotifywait -m -r -d -o /var/log/change.log –timefmt "%F %T’ –format "%T %w%f %e’  -e close_write -e create /home/www

其中/var/log/change.log是日志路径,/home/www是监控的路径

参见:

http://www.centos.bz/2012/06/inotify-tools-introduction/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值