文件监控之inotifywait

作者 : 开心源码 本文共2081个字,预计阅读时间需要6分钟 发布时间: 2022-05-13 共218人阅读

什么是inotifywait

inotifywait是一个Linux文件系统监控工具。使用Linux系统的inotify接口来实现。

安装方法和环境要求

inotifywait要求系统内核版本必需要高于2.6.13。假如不满足条件需要更新系统内核。

查看系统内核版本的方法:

uname -r

接下来执行安装步骤:

yum install -y epel-releaseyum --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_tomoved_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| 

配置实例

  1. 监控/root/demo/目录下所有文件的所有事件:
inotifywait -mrq --format '%T %e %w%f' --timefmt '%F %H:%M:%S' /root/demo/
  1. 监控/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/
  1. 监控/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/
  1. 监控/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/
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 文件监控之inotifywait

发表回复