inotify-tools用法
2014年12月02日 14:40
一、介绍
inotify-tools是为linux下inotify文件监控工具提供的一套C的开发接口函数库,同时还提供了一系列的命令行工具,这些工具可以用来监控文件系统的事件。Inotify-tools使用用c编写的,除了要求内核(Linux2.6.13开始)支持inotify外,不依赖于其他。inotify-tools提供两种工具,一是inotifywait,它是用来监控文件或目录的变化,二是inotifywatch,它是用来统计文件系统访问的次数。
二、初试
1.查看内核是否支持
➜ ~ grep INOTIFY_USER /boot/config-$(uname -r) CONFIG_INOTIFY_USER=y
2.安装
➜ ~ yum install inotify-tools
3.运行inotifywait
➜ ~ inotifywait -rm workspace Setting up watches. Beware: since -r was given, this may take a while! Watches established.
4. 触发事件, 查看结果
➜ ~ touch workspace/demo.py inotifywait输出 workspace/ CREATE demo.py workspace/ OPEN demo.py workspace/ ATTRIB demo.py workspace/ CLOSE_WRITE,CLOSE demo.py
三、语法
inotifywait [-hcmrq] [-e <event> ] [-t <seconds> ] [--format <fmt> ] [--timefmt <fmt> ] <file> [ ... ]
四、选项
-r, --recursive 监视一个目录下的所有子目录。
-e , --event 指定监视的事件。
-m, --monitor 接收到一个事情而不退出,无限期地执行。默认的行为是接收到一个事情后立即退出。
-q, --quiet 指定一次,不会输出详细信息,指定二次,除了致命错误,不会输出任何信息。
-h,--help 输出帮助信息
@<file> 排除不需要监视的文件,可以是相对路径,也可以是绝对路径。
--fromfile 从文件读取需要监视的文件或排除的文件,一个文件一行,排除的文件以@开头。
-d, --daemon 跟--monitor一样,除了是在后台运行,需要指定--outfile把事情输出到一个文件。也意味着使用了--syslog。
-o, --outfile 输出事情到一个文件而不是标准输出。
-s, --syslog 输出错误信息到系统日志
--exclude 正则匹配需要排除的文件,大小写敏感。
--excludei 正则匹配需要排除的文件,忽略大小写。
-t , --timeout 设置超时时间,如果为0,则无限期地执行下去。
-c, --csv 输出csv格式。
--timefmt 指定时间格式,用于--format选项中的%T格式。
--format 指定输出格式。
%w 表示发生事件的目录
%f 表示发生事件的文件
%e 表示发生的事件
%Xe 事件以“X"分隔
%T 使用由--timefmt定义的时间格式
五、输出
watched_filename EVENT_NAMES event_filename
- watched_filename 监控文件
- EVENT_NAMES 事件名
- event_filename 事件对象文件
六、事件
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 文件系统取消挂载,之后不再监听此文件系统。
参考: https://www.centos.bz/2012/06/inotify-tools-introduction/