美文网首页
使用inotify 监控文件变化

使用inotify 监控文件变化

作者: 阿汤哥_8d27 | 来源:发表于2021-01-19 20:26 被阅读0次

文件监控可以配合rsync实现文件自动同步,例如监听某个目录,当文件变化时,使用rsync命令将变化的文件同步。(可用于代码自动发布)
inotify 是linux内核的一个特性,在内核 2.6.13 以上都可以使用。
如果在shell环境下,可以安装 yum -y install inotify-tools,安装以后有两个命令可以用inotifywait 和 inotifywatch,inotifywait 是需要使用的命令。

监听test 目录:

/usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M'  \
--format '%T %w %f %e' -e create,delete,modify,attrib \
test

执行上面的命令之后,在监听的目录下删除并重新创建tets.py文件,得到如下结果:

19/01/21 20:39 test/ test.py DELETE
19/01/21 20:39 test/ test.py CREATE
19/01/21 20:39 test/ test.py ATTRIB
参数 说明
-m 持续监听
-r 使用递归形式监视目录
-q 减少冗余信息,只打印出需要的信息
-e 指定要监视的事件,多个事件使用逗号隔开
--timefmt 时间格式:ymd分别表示年月日,H表示小时,M表示分钟
--format 监听到的文件变化的信息

--format 说明:

参数 说明
%w 表示发生事件的目录
%f 表示发生事件的文件
%e 表示发生的事件
%Xe 事件以“X”分隔
%T 使用由--timefmt定义的时间格式

这个脚本的功能是循环监听文件或目录的增删改事件,当事件发生时执行设置的脚本文件。

  #!/bin/sh
  # 监视的文件或目录
  filename=$1
  # 监视发现有增、删、改时执行的脚本
  script=$2

  inotifywait -mrq --format '%e' --event create,delete,modify  $filename | while read event
  do
      case $event in MODIFY|CREATE|DELETE) bash $script ;;
      esac
  done

shell脚本后台执行:
一、nohup
使用nohup,其中test.sh为所执行的脚本,out.txt为输出信息的地方

相关文章

网友评论

      本文标题:使用inotify 监控文件变化

      本文链接:https://www.haomeiwen.com/subject/umpczktx.html