linux-inotify工具监控文件状态变化总结

linux-inotify工具监控文件状态变化总结

大纲

  • 1 安装
  • 2 使用

Inotify 它是在内核 2.6.13 版本中引入的一个新功能,它为用户态监视文件系统的变化提供了强大的支持,允许监控程序打开一个独立文件描述符,并针对事件集监控一个或者多个文件,例如打开、关闭、移动/重命名、删除、创建或者改变属性。

在这里插入图片描述

inotify 可以监控文件的变化,使用场景适合监视配置文件变化,后触发重启程序

安装

安装inotify

  • CentOS yum install inotify-tools -y
  • Ubuntu apt-get install inotify-tools -y

使用源码编译安装

以Ubuntu为例子
可能需要安装 gcc cmake libc6-dev

wget http://nchc.dl.sourceforge.net/project/inotify-tools/inotify-tools/3.13/inotify-tools-3.13.tar.gz

./configure
make && make install

自动安装到
/usr/local/bin/inotifywait
/usr/local/bin/inotifywatch

inotifywait 仅执行阻塞,等待 inotify 事件,你可以使用它来监控任何一组文件和目录,或监控整个目录树(目录、子目录、子目录的子目录等等),并且可以结合 shell 脚本,更好的使用 inotifywait。
inotifywatch 用来收集关于被监视的文件系统的统计数据,包括每个 inotify 事件发生多少次。

使用 inotifywait

主要有以下几个配置参数

  • -m 持续监听 (否则监听一次后就退出了)
  • -r 使用递归形式监视目录 (可以监听到子文件夹)
  • -q 减少冗余信息,只打印出需要的信息
  • -e 指定要监视的事件,多个时间使用逗号隔开
  • –timefmt 时间格式 (例如 --timefmt ‘%Y-%m-%d %H:%M:%s’)
  • –format 监听到的文件变化的信息 (主要使用–timefmt 则需要同时使用 --format)

-e 指定要监视的事件

  • access 访问,读取文件。
  • modify 修改,文件内容被修改
  • attrib 属性,文件元数据被修改。
  • move 移动,对文件进行移动操作。
  • create 创建,生成新文件
  • open 打开,对文件进行打开操作
  • close 关闭,对文件进行关闭操作。
  • delete 删除,文件被删除。

–format

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

例如
输出 时间 变化的文件夹 文件 事件

–format ‘%T %w %f %e’

基础使用方式

监听文件夹的变化

inotifywait -e modify,move,create,delete -mr  /ops/tmp/ 

linux-inotify工具监控文件状态变化总结_第1张图片

监听文件夹的变化,指定时间格式,输出各式

inotifywait -e modify,move,create,delete -mr --timefmt '%Y-%m-%d %H:%M:%S' --format '%T %w %f %e'  /ops/tmp/

在这里插入图片描述

高级使用

可以把命令编写成一个脚本,并把内容输入到变量中,基于条件处理

#!/bin/bash
configfile='.conf$'

inotifywait -e modify,delete -mr --timefmt '%Y-%m-%d %H:%M:%S' --format '%T %w %f %e'   /ops/tmp/ | while read day time folder file event;
do
  # echo $time  $folder  $file  $event
  if [[ $file =~ $configfile ]]; then
        echo "is .conf file "$file  $event
  fi
done

注意 if中使用正则表达式,需要使用[[]]括起来

linux-inotify工具监控文件状态变化总结_第2张图片

你可能感兴趣的:(linux,运维,linux,ubuntu,服务器)