利用inotifywait监控主机文件和目录

inotifywait 是一个可以实时监控文件变动的工具,它利用linux内核中的inotify机制实现监控功能。

  1. 查看内核版本

  2. [root@Oracle ~]# uname -r

  3. 2.6.32-220.el6.i686

 

  1. 安装inotify-tools

  2. yum install -y inotify-tools


ll /proc/sys/fs/inotify
总计 0
-rw-r--r-- 1 root root 0 04-13 19:56 max_queued_events
-rw-r--r-- 1 root root 0 04-13 19:56 max_user_instances
-rw-r--r-- 1 root root 0 04-13 19:56 max_user_watches
如果有上面三项输出,表示系统已经默认支持inotify,接着就可以开始安装inotify-tools了


inotifywait相关参数
Inotifywait是一个监控等待事件,可以配合shell脚本使用它,下面介绍一下常用的一些参数:
-m, 即--monitor,表示始终保持事件监听状态。
-r, 即--recursive,表示递归查询目录。
-q, 即--quiet,表示打印出监控事件。
-e, 即--event,通过此参数可以指定要监控的事件,常见的事件有modify、delete、create、attrib等。


使用:

inotifywait -m /home/zwf/inotify-test/


inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format  '%T %w%f %e'  --exclude .*swp --exclude .*done --even close_write  目录 | while read  date time file event

do

命令。。。。

done



参数说明

inotifywait

语法:

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 

指定时间格式,用于--format选项中的%T格式。

--format 

指定输出格式。

%w 表示发生事件的目录

%f 表示发生事件的文件

%e 表示发生的事件

%Xe 事件以“X"分隔

%T 使用由--timefmt定义的时间格式

inotifywatch

语法:

inotifywatch [-hvzrqf] [-e ] [-t ] [-a ] [-d ] [ ... ]

参数:

-h, --help

输出帮助信息

-v, --verbose

输出详细信息

@

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

--fromfile 

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

-z, --zero

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

--exclude 

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

--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 文件系统取消挂载,之后不再监听此文件系统。





你可能感兴趣的:(wait,inotify,inotifywait)