inotifytools监控目录内容事件

inotifytools包含两个工具:inotifywatch和inotifywait,inotifywatch返回在监控期间发生的文件系统事件的统计信息,inotifywait会等待文件系统事件的发生。所以如果实时监控文件的变化,就用inotifywait,这两个工具的参数基本很相近,以inotifywait举例说明:

-m 持续的监控事件;默认是接收到一个事件就退出

-r 递归监控目录下的所有子目录,如果目录下包含其他目录也需要监控,就需要使用这个选项

-q 安静模式;默认执行inotifywait会打印两条任务信息,添加此选项会消除系统默认的提示信息

--exclude 排除列表,通过正则表达式匹配上的所有文件都不会被监控,大小写敏感

-t 超时时间,单位是秒;如果在指定的时间内没有发生任何事情,则退出

-e 指定要监控的事件类型;这个参数应该算是比较常用,可以监控的事件类型下面单独举例

--timefmt 自定义输出事件的时间类型

--format 自定义输出事件的显示格式,目前可以支持的格式化参数有下面几个:

%w 被监控事件的文件名

%f 被监控目录内触发事件的文件名

%e 触发的事件类型,通过逗号分隔

%Xe 触发的事件类型,通过设置的X字符分隔

%T 使用自定义的时间格式替换当前时间;使用此格式化字符串需要同时配置--timefmt参数

 

Event事件类型有如下几种:

access 被监控的文件或者目录内的文件被读取

modify 被监控的文件或者目录内的文件被写入

attrib 被监控的文件或者目录内的文件属性被修改,包括时间戳,文件权限,扩展属性等

close_write 被监控的文件或者目录内的文件已可写模式打开后关闭

close_nowrite 被监控的文件或者目录内的文件已只读模式打开后关闭

close 被监控的文件或者目录内的文件被关闭,不管其打开的模式;事实上这就是通过同时监听close_wait和close_nowrite的一个简单实现

open 被监控的文件或者目录内的文件被打开

moved_to 文件或者目录被移动到监控的目录,这个事件即使在同目录下移动文件也会触发

moved_from 文件或者目录被移出监控的目录,这个事件即使在同目录下移动文件也会触发

move 同时监控moved_to和moved_from

move_self 被监控的文件或者目录自己被移动,这个事件发生之后,原来被监控的文件或者目录将不再被监控

create 在被监听的目录内创建了文件或者目录

delete 在被监听的目录内删除了文件或者目录

delete_self 被监听的文件或者目录自己被删除,这个事件发生之后,原来被监控的文件或者目录将不再被监控

unmount 被监听的文件或者目录所依赖的文件系统被卸载,这个事件发生之后,原来被监控的文件或者目录将不再被监控

接下来看两个示例,如何一直监控目标文件或者目录:

官方帮助给的示例:

另外一种写法:

 

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据