原始博文和参考博文

1、CentsOS系统inotify实时监控服务器文件

2、Linux中让进程在后台运行的方法

3、linux inotify 监控文件系统事件 非常好

方法一

说明:

服务器系统:CentOS

文件目录:/home/web/osyunwei.com

实现目的:

当/home/web/osyunwei.com下面除过cache目录之外,任何文件发生变化时,记录日志并保存。

具体操作:

一、安装Inotify-tools工具

1、查看服务器内核是否支持inotify

ll /proc/sys/fs/inotify #列出文件目录,出现下面的内容,说明服务器内核支持inotify

-rw-r--r-- 1 root root 0 Mar 7 02:17 max_queued_events

-rw-r--r-- 1 root root 0 Mar 7 02:17 max_user_instances

-rw-r--r-- 1 root root 0 Mar 7 02:17 max_user_watches

备注:Linux下支持inotify的内核最小为2.6.13,可以输入命令:uname -a查看内核

CentOS 5.X 内核为2.6.18,默认已经支持inotify

2、安装inotify-tools

yum install make gcc gcc-c++ #安装编译工具

inotify-tools下载地址:http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz

上传inotify-tools-3.14.tar.gz到/usr/local/src目录下

cd /usr/local/src

tar zxvf inotify-tools-3.14.tar.gz #解压

cd inotify-tools-3.14 #进入解压目录

./configure --prefix=/usr/local/inotify #配置

make #编译

make install #安装

3、设置系统环境变量,添加软连接

echo "PATH=/usr/local/inotify/bin:$PATH" >>/etc/profile.d/inotify.sh

source /etc/profile.d/inotify.sh #使设置立即生效

echo "/usr/local/inotify/lib" >/etc/ld.so.conf.d/inotify.conf

ln -s /usr/local/inotify/include /usr/include/inotify

4、修改inotify默认参数(inotify默认内核参数值太小)

查看系统默认参数值

sysctl -a | grep max_queued_events

结果是:fs.inotify.max_queued_events = 16384

sysctl -a | grep max_user_watches

结果是:fs.inotify.max_user_watches = 8192

sysctl -a | grep max_user_instances

结果是:fs.inotify.max_user_instances = 128

修改参数:

sysctl -w fs.inotify.max_queued_events="99999999"

sysctl -w fs.inotify.max_user_watches="99999999"

sysctl -w fs.inotify.max_user_instances="65535"

vi /etc/sysctl.conf #添加以下代码

fs.inotify.max_queued_events=99999999

fs.inotify.max_user_watches=99999999

fs.inotify.max_user_instances=65535

:wq! #保存退出

参数说明:

max_queued_events:

inotify队列最大长度,如果值太小,会出现"** Event Queue Overflow **"错误,导致监控文件不准确

max_user_watches:

要同步的文件包含多少目录,可以用:find /home/www.osyunwei.com -type d | wc -l 统计,必须保证max_user_watches值大于统计结果(这里/home/www.osyunwei.com为同步文件目录)

max_user_instances:

每个用户创建inotify实例最大值

二、创建实时监控脚本

mkdir -p /home/inotify #创建目录

vi /home/inotify/inotif.sh #编辑

#!/bin/sh

/usr/local/inotify/bin/inotifywait -mrq -e modify,create,move,delete --fromfile '/home/inotify/excludedir' --timefmt '%y-%m-%d %H:%M' --format '%T %f %e'

/home/web/osyunwei.com/ >> /tmp/rsync.txt

:wq! #保存退出

vi /home/inotify/excludedir #编辑

/home/web/osyunwei.com/

@/home/web/osyunwei.com/cache/ #排除的目录

:wq! #保存退出

chmod +x /home/inotify/inotif.sh #添加执行权限

vi /etc/rc.d/rc.local #编辑,在最后添加一行,开机自动执行

sh /home/inotify/inotif.sh

:wq! #保存退出

如果/home/web/osyunwei.com/目录下面有任何文件发送变化,/tmp/rsync.txt文件中都会记录。

至此,Linux下用inotify-tool实时监控服务器文件完成。

方法二

inotify-tools是linux下通过inotify机制监控文件变化的命令行工具,可实时监控服务器文件变化并记录,如果服务器出现问题可协助查找原因,安装要求内核大于2.6.13。

查看服务器是否符合安装要求:

uname -a
Linux centos5.7-x64 2.6.18-274.17.1.el5

ll /proc/sys/fs/inotify/
-rw-r--r-- 1 root root 0 05-15 01:12 max_queued_events
-rw-r--r-- 1 root root 0 05-15 01:12 max_user_instances
-rw-r--r-- 1 root root 0 05-15 01:12 max_user_watches

服务器如有安装EPEL源可使用yum安装:

yum install inotify-tools

编译安装:

cd /usr/local/src/
wget --no-check-certificate https://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar zxvf inotify-tools-3.14.tar.gz 
cd inotify-tools-3.14
./configure
make
make install
ldconfig -v

inotify相关参数:

/proc/sys/fs/inotify/max_queued_events  #请求events数的最大值
/proc/sys/fs/inotify/max_user_instances #每个user可创建的instances数量上限
/proc/sys/fs/inotify/max_user_watches   #可监控的目录最大数
inotifywait是一个监控等待事件,可配合shell实时监控记录文件系统,常用参数:

--timefmt 时间格式
%y年 %m月 %d日 %H小时 %M分钟
--format 输出格式
%T时间 %w路径 %f文件名 %e状态
-m 始终保持监听状态,默认触发事件即退出。
-r 递归查询目录
-q 打印出监控事件
-e 定义监控的事件,可用参数:
open   打开文件
access 访问文件
modify 修改文件
delete 删除文件
create 新建文件
attrb  属性变更
应用示例:
实时监控wwwroot目录下新建或修改的文件并输出:
 
inotifywait -mrq -e modify,create --timefmt '%y-%m-%d %H:%M' --format '%T %f %e' /home/wwwroot/

输出如下:
 
12-05-14 20:43 favicon.ico
12-05-14 20:43 favicon.ico
12-05-14 20:43 tab_console_down.gif
12-05-14 20:43 tab_console_down.gif
12-05-14 20:43 tab_graphs.gif
12-05-14 20:43 tab_graphs.gif

我采用方法二,参考博文2 后台执行。

监控文件没有问题,但是我想让监控外修改监控目录下文件的权限,修改 inotif.sh

#!/bin/sh/usr/local/inotify/bin/inotifywait -mrq -e modify,create,move,delete --fromfile '/www/web/everyday_interval/excludedir' --timefmt '%y-%m-%d %H:%M' --format '%T %f %e' /www/web/default/ >> /www/web/everyday_interval/rsync.txt
chown webwww.users /www/web/default/ -R #保证 webwww 对当前目录的所有权限  
webwww_path='/www/web/default'
cd $webwww_path  #转到 webwww 默认网站根目录
chown webwww.users * -R  #赋予权限

监控记录正常,但是修改目录权限不行!后有参考博文:linux inotify 监控文件系统事件中的方法自定义事件处理脚本 修改后 inotif.sh如下

/usr/local/inotify/bin/inotifywait -mrq --timefmt '%y-%m-%d %H:%M' --format '%T %f %e' -e modify,create,move,delete /www/web/default | while read  date time file event
docase $event inMODIFY|CREATE|MOVE|MODIFY,ISDIR|CREATE,ISDIR|MODIFY,ISDIR)chown webwww.users /www/web/default/ -R  #echo $event'-'$fileecho $event'-'$file>>/www/web/everyday_interval/rsync.txt;;MOVED_FROM|MOVED_FROM,ISDIR|DELETE|DELETE,ISDIR)chown webwww.users /www/web/default/ -R  #echo $event'-'$file  echo $event'-'$fileecho $event'-'$file>>/www/web/everyday_interval/rsync.txt;;esac
done

后台执行:

/www/web/everyday_interval/inotif.sh&

转载于:https://www.cnblogs.com/wuling129/p/5227331.html

【转载】CentsOS系统inotify实时监控服务器文件(夹)定制事件处理程序相关推荐

  1. linux监控覆盖视频恢复,linux下使用inotify实时监控文件变更,做完整性检查

    linux下使用inotify实时监控文件变更,做完整性检查 完整性检查是HIDS的重要组成部分之一,linux下做完整性检查的思路有3个 1.哈希对比 2.签名校验 3.inotify 方法有2个: ...

  2. win10系统D盘Drivers文件夹可以删除吗--win10专业版

    win10系统D盘Drivers文件夹可以删除吗?刚买的新电脑6月7号收到电脑开机后,D盘默认有一个文件夹,占用空间3GB多,想问一下能否在不影响电脑正常运行的前提下删除此文件夹?针对这一问题winw ...

  3. 手机中geetest是什么文件_安卓手机系统中各类英文文件夹的含义详解,不知道的尽快熟知!...

    说到手机,不管是安卓版还是苹果版的手机,总是会有很多地方让人头疼,不是因为不好用,而是因为不认识,完全不知道干嘛用的.看来使用手机,还需要将自己的英文学好,这样才不会导致自己的手机内存不够用和误删除一 ...

  4. 如何用python新建文件夹_用Python编写一个每天都在系统下新建一个文件夹的脚本...

    这个程序的功能非常的简单,就是每天在系统中新建一个文件夹.文件夹即当前的时间.此代码是在同事那边看到的,为了锻炼下自己薄弱的Python能力,所以花时间重新写了一个.具体代码如下: import ti ...

  5. 苹果系统c语言打开文件夹,MAC系统硬盘文件夹详解

    MAC系统硬盘中的文件夹有什么作用?我想并不是所有的用户都清楚这点,那么,今天小编就给大家详细的介绍下,MAC系统硬盘中的文件夹有哪些,和它们各自的作用是什么? MAC硬盘中各个文件夹 打开Macin ...

  6. 服务器提示位置不可用 拒绝访问,主编修复win10系统打开Local settings文件夹提示“位置不可用,拒绝访问的问题...

    今天和大家分享一下win10系统打开Local settings文件夹提示"位置不可用,拒绝访问问题的解决方法,在使用win10系统的过程中经常不知道如何去解决win10系统打开Local ...

  7. Mac系统下无法删除文件夹

    Mac系统下无法删除文件夹 之前在Mac桌面上不知道从哪拖动来了一个文件夹,想删除确怎么也删除不了. 永远都是这个进度,哭唧唧~~ 后来找到方法,可针对各种文件夹.文件无法删除问题: 第一步:打开Ma ...

  8. 服务器C盘中的文件删不掉,小编面对win10系统C盘inetpub文件夹删不掉的处理步骤...

    许多win10系统用户在工作中经常会遇到win10系统C盘inetpub文件夹删不掉的情况,比如近日有用户到本站反映说win10系统C盘inetpub文件夹删不掉的问题,但是却不知道要怎么解决win1 ...

  9. 服务器c盘有个inetpub文件夹,老司机为你示范win10系统C盘inetpub文件夹删不掉的图文教程...

    也许大家在用电脑工作的使用中会遇到win10系统C盘inetpub文件夹删不掉的情况,目前就有很多朋友向我资讯关于win10系统C盘inetpub文件夹删不掉的具体处理步骤.小编把总结的关于win10 ...

最新文章

  1. CentOS6.X 系统安装图文教程,超详细
  2. 第十三届蓝桥杯青少年STEMA(2021.08-2021.03)C++
  3. Java实现简单图书管理系统
  4. Arduino + USB Host Sheild 实现USB鼠标转PS/2接口
  5. 鸿蒙系统如何设置隐私,安卓12系统首次露面:加强隐私功能,一个设定大受好评...
  6. 奇幻RPG(人物构造 与 Abstract Factory模式)
  7. Rockchip | Rockchip U-Boot的获取与构建
  8. alter database recover managed standby database 语句
  9. uni-app整包更新与热更新方案(安卓和IOS)
  10. GBase 8c产品家族及功能简介
  11. WPA3 vs WPA2
  12. 评测酷睿i5 1240p和锐龙r5 6600u选哪个 i51240p和锐龙r56600u对比
  13. R语言随机抽样sample
  14. STL—queue(队列) 详解
  15. wasm转c调用与封装至dll案例
  16. ajax分页 2017,ajax分页
  17. halcon图像合并
  18. 为什么大家说mysql数据库单表最大两千万?依据是啥?
  19. 笔记连载 | Day7 【半加器、全加器、16位加法器、16位减法器设计】 【原理及verilog实现、仿真】篇
  20. 如何解决老毛桃PE系统自动安装360

热门文章

  1. JS实现的表单验证和强大的×××
  2. [学习笔记]矩形面积并
  3. 【跃迁之路】【530天】刻意练习系列289(2018.07.20)
  4. [BZOJ 2002][Hnoi2010]Bounce 弹飞绵羊(分块)
  5. Word2Vec 使用总结
  6. Mysql性能优化二
  7. lnmp安装博客系统WordPress
  8. Python的包管理工具Pip
  9. linux 网络编程之信号机制
  10. winform中的webbrowser里面操作html代码问题