CentsOS系统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

时间: 2024-11-13 06:39:37

CentsOS系统inotify实时监控服务器文件的相关文章

centos系统inotify结合rsync实时同步文件

安装rsync工具 um install rsync rsync有个特别之处,既可以作为服务端在后台运行,也可以作为客户端去连接服务器,甚至可以抛弃服务端,直接在本地文件系统上进行同步.本文讲述 inotify+rsync 打造文件实时同步系统,先讲讲它与传统的rsync 服务器之间的区别,这点非常重要,很少有人提及这个,以至于新手在配置inotify+rsync 产生疑惑.通常而言,rsync 作为服务端监听在873端口,等待客户端来连接,对应的模式是一个服务端,多个客户端,比如: rsync

rsync+inotify如何实现文件的实时同步

环境描述:现有两台服务器,要实现mp3文件的实时同步.可以使用rsync来做同步,但不能实现实时,为了实现实时同步,我们使用inotify来监控需要同步的目录发生的改变,inotify只是内核中的一个监控文件变化的模块,提供了监控文件变化的API,而要连接这个API,需要安装inotify-tools工具.可以实现文件的新增,删除,修改,改变属性等,功能很强大.现在需要一台服务器做为内容发布端,来把改变的文件,通过rsync实时的同步到内容服务器. =======================

win8系统复制多个文件过程中如何暂停复制文件

  win8系统复制多个文件过程中如何暂停复制文件.win8系统复制文件的方法其实很简单,只要点击复制即可,复制较小的文件只要短短的几秒.但是如果复制大型文件或者同时复制多个文件,那就需要很长的一段时间了,速度也会变慢.复制文件过程中需要进行其他操作,系统会变的非常卡,怎么办?可能大家不知道win8系统在复制多个文件过程中也是可以暂停复制文件的,感兴趣的用户一起看看下面设置方法吧. 1.首先找一个大容量文件,把它拷贝到其它目录.文件拷贝窗口出来以后,点击"详细信息"选项; 2.接下来会

python实现实时监控文件的方法_python

在业务稳定性要求比较高的情况下,运维为能及时发现问题,有时需要对应用程序的日志进行实时分析,当符合某个条件时就立刻报警,而不是被动等待出问题后去解决,比如要监控nginx的$request_time和$upstream_response_time时间,分析出最耗时的请求,然后去改进代码,这时就要对日志进行实时分析了,发现时间长的语句就要报警出来,提醒开发人员要关注,当然这是其中一个应用场景,通过这种监控方式还可以应用到任何需要判断或分析文件的地方,所以今天我们就来看看如何用python实现实时监

Win7系统电脑将扫描文件变成为PDF格式的方法

  Win7系统电脑将扫描文件变成为PDF格式的方法 详细步骤如下: 1.首选下载"PDF-Tools"4.0的版本; 2.选中"直接扫描",然后点击右下角的"开始"按钮; 3.选择系统中的扫描仪,然后点击下一步; 4.耐心等待,扫描完成后即可得到PDF文件. 上述教程就是Win7系统电脑将扫描文件变成为PDF格式的方法,有需要的用户可参考本教程解决.

系统中的Hosts文件

在linux 系统中有个Hosts文件/etc/hosts 对Windows系统稍微熟悉点的朋友都知道,在Window系统中有个Hosts文件,在Windows 2000/XP系统中位于C:\Windows\System32\Drivers\Etc 目录中,在Windows 98系统下该文件在Windows目录.这到底是个什么文件呢?它有什么作用呢?下面我们就一起来了解它.   其实,Hosts文件是一个纯文本文件,用记事本就可以将其打开(如下图所示).这个文件是根据TCP/IP for Win

XP系统手动制作exe文件关联修复器的方法

XP系统手动制作exe文件关联修复器的方法   新建文本文档电脑常识 XP系统制作exe文件关联修复器的方法: 1.在桌面上空白处鼠标右键,弹出的快捷菜单指向"新建",在下一级菜单中选择"文本文档"; 2.打开新建的文本文档,将下面的代码复制进去: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOTexefile] @="应用程序" "EditFlags"=hex:3

win7系统回收站删除的文件怎么恢复?

  win7系统回收站删除的文件怎么恢复? 1.按下"Win+R"组合键呼出运行,在运行框中输入"regedit"点击确定打开"注册表编辑器"; 2.在注册表编辑器左侧依次展开:HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Explorer/DeskTop/NameSpace; 3.点击"NameSpace"项后,在右侧空白处单击右键,新建"

Win7系统下C盘文件清理方法

  Win7系统下C盘文件清理方法 具体方法如下: 第一.我们首先关闭Win7系统休眠功能,最多能释放出3G多空间喔 "以管理员身份运行,所有程序→附件→命令提示符",右击选择"以管理员身份运行",进入命令提示符后,手工输入"powercfg -h off" 关闭Win7系统休眠功能. 第二.关闭系统保护 计算机右键属性--高级管理设置--系统保护. 第三.转移虚拟内存 计算机右键属性--高级管理设置--高级--性能-设置-高级-更改. 第四.转