inotifywait监听php,文件监控之inotifywait

什么是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的文件监控事件

--excludei :排除所有匹配正则表达式pattern(忽略大小写)的文件监控事件

-m | --monitor:加上这个参数inotifywait会持续监听文件变化。如果不加这个参数,命令会在监控到第一个事件的时候退出

-d | --daemon:在后台运行,其他行为和-m参数一致。日志输出需要使用-o或--outfile指定

-r | --recursive:递归监听所有的目录

--fromfile :从file中读取需要监听的文件列表。file中一行写一个监听目录,需要排除的行使用@开头

-o | --outpfile:输出到文件而不是默认的stdout

-s | --syslog:发送错误到syslog而不是stderr

-q | --quiet:减少打印输出,仅打印监听事件

-qq:什么都不打印(事件也不打印)

--format:自定义格式化输出,参数含义后面说明

--timefmt:使用strftime定义时间格式。在--format中使用%T打印时间

-c | --csv:打印事件为csv格式

-t | --timeout :监听单次事件时候的超时时间,如果设置为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/

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值