什么是inotifywait
inotifywait是一个Linux文件系统监控工具。使用Linux系统的inotify接口来实现。
安装方法和环境要求
inotifywait要求系统内核版本必须要高于2.6.13。如果不满足条件需要升级系统内核。
查看系统内核版本的方法:
uname -r
接下来执行安装步骤:
yum install -y epel-release
yum --enablerepo=epel install inotify-tools
安装完毕后,执行:
inotifywait -h
如果能看到帮助信息,说明安装成功。
命令参数解析
- -h | --help:打印帮助信息
- --exclude <pattern>:排除所有匹配正则表达式pattern的文件监控事件
- --excludei <patter>:排除所有匹配正则表达式pattern(忽略大小写)的文件监控事件
- -m | --monitor:加上这个参数inotifywait会持续监听文件变化。如果不加这个参数,命令会在监控到第一个事件的时候退出
- -d | --daemon:在后台运行,其他行为和-m参数一致。日志输出需要使用-o或--outfile指定
- -r | --recursive:递归监听所有的目录
- --fromfile <file>:从file中读取需要监听的文件列表。file中一行写一个监听目录,需要排除的行使用
@
开头 - -o | --outpfile:输出到文件而不是默认的stdout
- -s | --syslog:发送错误到syslog而不是stderr
- -q | --quiet:减少打印输出,仅打印监听事件
- -qq:什么都不打印(事件也不打印)
- --format:自定义格式化输出,参数含义后面说明
- --timefmt:使用strftime定义时间格式。在
--format
中使用%T
打印时间 - -c | --csv:打印事件为csv格式
- -t | --timeout <seconds>:监听单次事件时候的超时时间,如果设置为0永不超时
- -e | --event:监听指定的事件类型,如果省略,监听所有类型的事件
可以监听的事件列表:
- access:读取内容
- modify:修改
- attrib:属性修改
- close_write:以writable mode打开后关闭
- close_nowrite:以read-only mode打开后关闭
- close:关闭(无论是可写模式打开还是只读模式打开)
- open:打开
- moved_to:有文件或目录移动到了监听的目录
- moved_from:有文件或目录从监听的目录移出
- move:包含
moved_to
和moved_from
- create:创建
- delete:删除(监听的目录内)
- delete_self:监听的文件或目录本身被删除
- umount:发生了umount事件
--format参数格式的指定方式:
- -w:事件对应的文件所在目录
- -f:事件对应的文件名
- -e: 事件类型,使用逗号分隔
- -Xe:事件类型,使用X字符分隔,在实际使用时把字符X替换为分隔符
- %T:事件发生的时间,格式在--timefmt中指定
下面给出一个--format
的例子和解释:
$ inotifywait -mrq --format '%T %e %w %f' --timefmt '%F %H:%M:%S' /root/demo/
2020-03-30 02:24:21 OPEN /root/demo/ 2.txt
| -- %T -- | |%e| |-- %w --| | %f|
配置实例
- 监控
/root/demo/
目录下所有文件的所有事件:
inotifywait -mrq --format '%T %e %w%f' --timefmt '%F %H:%M:%S' /root/demo/
- 监控
/root/demo/
目录下所有文件的create,modify,delete和attrib事件
inotifywait -mrq --format '%T %e %w%f' --timefmt '%F %H:%M:%S' -e create,modify,delete,attrib /root/demo/
- 监控
/root/demo/
目录下所有文件的create,modify,delete和attrib事件,输出监控记录到/root/inotify.log
inotifywait -mrq --format '%T %e %w%f' --timefmt '%F %H:%M:%S' -e create,modify,delete,attrib --outfile /root/inotify.log /root/demo/
- 监控
/root/demo/
目录下所有文件的create,modify,delete和attrib事件,输出监控记录到/root/inotify.log
,忽略目录中的swp,swx和~结尾的文件
inotifywait -mrq --format '%T %e %w%f' --timefmt '%F %H:%M:%S' -e create,modify,delete,attrib --outfile /root/inotify.log --excludei '^.*(.swp|.swx|~)$' /root/demo/
网友评论