linux 文件监控工具,Linux下文件系统监控神器Inotify

两个月没写了。。拿个最近写的出来看下。

在使用linux过程中,我们会遇到监控某个目录或者文件的变化的需求,如关键配置文件,保密日志等。通常我们会使用定时或者后台脚本来解决,使用find或ls -al等。但这样并不实时而且也不高效。

我们已经知道在linux系统下,硬件层面我们已经有hotplug和udev来动态检测硬件。内核检测到新硬件插入,然后分别通知hotplug和udev。前者用来装入相应的内核模块(如usb-storage),而后者用来在/dev中创建相应的设备节点(如/dev/sda1)。

文件系统层面,在内核2.6.13之后,便有inotify来对文件系统进行动态监控了。它能监控文件的创建,访问,删除,修改,属性等操作。

如何判断自己系统是否支持,可以通过以下命令:

#grep INOTIFY_USER /boot/config-$(uname -r)

CONFIG_INOTIFY_USER=y# cat /proc/sys/fs/inotify/*

16384

128

8192

inotify的原理:

无论是目录还是文件,在内核中都对应一个 inode 结构,inotify 系统在 inode 结构中增加了两个字段:#ifdef CONFIG_INOTIFY

struct list_head    inotify_watches; /* watches on this inode */

struct semaphore    inotify_sem;    /* protects the watches list */

#endif

通常可以通过写c来调用inotify相关函数,当然也可以直接安装好别人写好了的inotify-tool工具来直接调用inotifywatch和inotifywait命令来实现自己的功能,下面是一个简单的监控示例:#!/bin/bash

#date=20160307

#version=0.4

#inotifywait de jiandan shiyong

Usage() {

echo "   Usage:./inotify.sh  stop

./inotify.sh  file1 file2  ... "

}

if [ $# == 0 ];then

Usage

exit 1

fi

monitor() {

/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format  '%T %w%f %e' --event modify,delete,create,attrib  $1 | while read  date time file event

do

case $event in

MODIFY|CREATE|MOVE|MODIFY,ISDIR|CREATE,ISDIR|MODIFY,ISDIR)

echo "`date`   $event'-'$file" >>/tmp/inotify_monitor.log

;;

MOVED_FROM|MOVED_FROM,ISDIR|DELETE|DELETE,ISDIR)

echo "`date`   $event'-'$file" >>/tmp/inotify_monitor.log

;;

esac

done

}

for i in ${@}

do

if [ $i == stop ];then

echo "The monitor has been stop !"

ps -ef |grep [i]notify |grep -v grep|awk '{print $2}'|xargs kill 2>/dev/null

else

monitor $i &

echo "starting monitor $i !"

fi

done

参考:http://www.ibm.com/developerworks/cn/linux/l-inotifynew/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值