Linux培训笔记之监控工具(3)

这里呢,我准备了一些范例来帮助大家理解 inotifywait 命令的使用。

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

[root@rsync-client ~]# inotifywait -rm /etc

Setting up watches.  Beware: since -r was given, this may take a while!

Watches established.

/etc/ OPEN ld.so.cache

/etc/ CLOSE_NOWRITE,CLOSE ld.so.cache

/etc/ CREATE test

/etc/ OPEN test

/etc/ ATTRIB test

/etc/ CLOSE_WRITE,CLOSE test

此时,我在另外一个新打开的终端,touch /etc/test,这边就会产生相应的事件信息了。

2、实时监控/home目录的文件或目录创建,修改和删除相关事件

[root@rsync-client ~]# inotifywait -mrq -e create,modify,delete /home

/home/ CREATE,ISDIR test2

/home/test2/ CREATE .bash_profile

/home/test2/ MODIFY .bash_profile

/home/test2/ CREATE .bash_logout

/home/test2/ MODIFY .bash_logout

/home/test2/ CREATE .bashrc

/home/test2/ MODIFY .bashrc

此时,我在新打开的终端上,使用useradd创建一个用户,这边就会产生相应的事件信息了!

3、实时监控/etc/passwd的文件修改,删除和权限相关事件,并且要求指定输出格式为27/06/14 16:12 /etc/passwd ATTRIB。

[root@rsync-client ~]# inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format  '%T %w%f %e' --event modify,delete,attrib  /etc/passwd

27/06/14 16:39 /etc/passwd ATTRIB

27/06/14 16:39 /etc/passwd IGNORED

此时,我在新打开的终端上,使用 useradd 创建一个新用户,这边就会产生相应的事件信息了!

4、写一个脚本实现对 /data/web 目录进行监控,监控文件删除,修改,创建和权限相关事件,并且要求将监控信息写入/var/log/web_watch.log。要求日志条目要清晰明了,能突显文件路径、事件名和时间。

[root@rsync-client ~]# cat web_watch.sh

#!/bin/bash

inotifywait -mrq --timefmt '%y/%m/%d %H:%M' --format  '%T %w%f %e' --event delete,modify,create,attrib  /data/web | while read  date time file event

do

case $event in

MODIFY|CREATE|MOVE|MODIFY,ISDIR|CREATE,ISDIR|MODIFY,ISDIR)

echo $event'-'$file'-'$date'-'$time >> /var/log/web_watch.log

;;

MOVED_FROM|MOVED_FROM,ISDIR|DELETE|DELETE,ISDIR)

echo $event'-'$file'-'$date'-'$time /var/log/web_watch.log

;;

esac

done

[root@rsync-client ~]# cat /var/log/web_watch.log

CREATE-/data/web/a-14/06/27-16:21

CREATE-/data/web/aa-14/06/27-16:21

CREATE-/data/web/aaaa-14/06/27-16:24

CREATE-/data/web/aaaaa-14/06/27-16:24

此时,我在新打开的终端上,使用 touch 在/data/web目录下创建a,aa,aaa,aaaa这四个文件。然后查看/var/log/web_watch.log 文件,即可发现已经产生相应的事件信息,并且按照指定格式进行存放!

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 # 以指定事件降序排列

OK,继续拿一个范例来帮助大家理解!

1、统计/home目录所在文件系统发生的事件次数

[root@rsync-client ~]# inotifywatch -v -e create -e modify -e delete -t 30 -r /home

Establishing watches...

Setting up watch(es) on /home

OK, /home is now being watched.

Total of 3 watches.

Finished establishing watches, now collecting statistics.

Will listen for events for 60 seconds.

total  modify  create  delete  filename

8          3            4          1      /home/

监控的时候,我在新打开的终端上,创建了4个文件,修改了3个文件内容,删除了一个文件。等监控的30秒时间到了之后,他就会显示出上面的事件次数报告!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/17814.html