`
- 浏览:
403364 次
- 性别:
- 来自:
深圳
-
最近,有个项目需要及时删除Nginx服务生成的缓存文件,由于不是很了解Nginx缓存生成的策略,在网上也没有仔细找,经过大家讨论,最终希望引入liunx的inotify功能,监控某个liunx目录下的各种事件(create,delete,access等等).想了解inotify的朋友,请参考以下两篇博文:1.http://www.ibm.com/developerworks/cn/linux/l-inotify.html使用
inotify 监控 Linux 文件系统事件2.http://www.ibm.com/developerworks/cn/linux/l-inotifynew/index.htmlinotify
-- Linux 2.6 内核中的文件系统变化通知机制如果看完两篇博文,你的想法是用C语言马上写一个监控文件的程序(我当初也这么想的),先别忙,看看下面的文章,马上向您介绍一下inotify-tools这个工具包,目前最新版是3.3版本,这个工具包几乎包含了目录和文件的监控点,也就是说,不用动手写C代码,已经有前人帮我写好了,我们可以直接通过bash脚本的调用完成这个功能.1、先查看linux的内核是否支持inotify,支持inotify的内核最小为2.6.13,输入命令:uname –a。如下图所示,内核为2.6.27,应该支持inotify.如果不支持,我建议你选择一个高级别的linux内核.否则应该会有很多麻烦.2、还可以通过如下命令查看系统是否支持inotify:ll /proc/sys/fs/inotify如果有如下输出,表示系统内核已经支持inotify:total 0-rw-r--r-- 1 root root 0 Feb 21 01:15 max_queued_events-rw-r--r-- 1 root root 0 Feb 21 01:15 max_user_instances-rw-r--r-- 1 root root 0 Feb 21 01:15 max_user_watches3.inotify-tools的下载和安装下载地址:[url]http://downloads.sourceforge.net/inotify-tools/inotify-tools-3.13.tar.gz?modtime=1199213676&big_mirror=0[/url]安装过程:略.4.内部命令介绍系统下执行命令:man inotify、 man inotifywait、 man inotifywatch即可得到相应的帮助信息,表示inotify安装成功。man inotify: 捕获文件系统的各种状态事件
-
inotifyevents
-
-
BitDescription
-
IN_ACCESSFilewasaccessed(read)(*)
-
IN_ATTRIBMetadatachanged(permissions,timestamps,
-
extendedattributes,etc.)(*)
-
IN_CLOSE_WRITEFileopenedforwritingwasclosed(*)
-
IN_CLOSE_NOWRITEFilenotopenedforwritingwasclosed(*)
-
IN_CREATEFile/directorycreatedinwatcheddirectory(*)
-
IN_DELETEFile/directorydeletedfromwatcheddirectory(*)
-
IN_DELETE_SELFWatchedfile/directorywasitselfdeleted
-
IN_MODIFYFilewasmodified(*)
-
IN_MOVE_SELFWatchedfile/directorywasitselfmoved
-
IN_MOVED_FROMFilemovedoutofwatcheddirectory(*)
-
IN_MOVED_TOFilemovedintowatcheddirectory(*)
-
IN_OPENFilewasopened(*)
-
man inotifywait: 等待并监控某个目录或文件的状态改变,能够适时的通过liunx脚本等待并监控文件改变的事件,可以在事件发生时退出脚本,也可以在事件发生时输出一些信息.参数说明:--fromfile <file> 只监控目录下文件状态的变化-m, --monitor 当事件发生后直接执行退出,-m 参数将不退出当前的shell脚本.-r, --recursive 递归监控当前目录下的所有文件和目录.(默认的文件和目录数最大是 8192个;如果不满足可以修改/proc/sys/fs/inotify/max_user_watches--exclude <pattern> 通过正则匹配文件名,大小写敏感.--excludei <pattern> 通过正则匹配文件名,大小写不敏感.-t <seconds> 事件发生时的秒数. -e <event> 监听那些事件的发生--timefmt option 指定输出的时间格式--format <fmt> 输出指定时间格式. %w 监控事件发生时的文件名或文件路径 %f 监控目录内部事件发生时文件名称 %e 监控指定的事件发生 %T 输出事件发生时的时间,--timefmt option指定格式inotifywatch: 使用linux的inotify特性监控某段时间内的文件状态,并输出摘要报表.样例:输出beagle目录下60秒内的访问和修改事件触发报表
-
%inotifywatch-v-eaccess-emodify-t60-r~/.beagle
-
Establishingwatches...
-
Settingupwatch(es)on/home/rohan/.beagle
-
OK,/home/rohan/.beagleisnowbeingwatched.
-
Totalof302watches.
-
Finishedestablishingwatches,nowcollectingstatistics.
-
Willlistenforeventsfor60seconds.
-
totalaccessmodifyfilename
-
14361074362/home/rohan/.beagle/Indexes/FileSystemIndex/PrimaryIndex/
-
13231053270/home/rohan/.beagle/Indexes/FileSystemIndex/SecondaryIndex/
-
303116187/home/rohan/.beagle/Indexes/KMailIndex/PrimaryIndex/
-
26174187/home/rohan/.beagle/TextCache/
-
2060206/home/rohan/.beagle/Log/
-
42042/home/rohan/.beagle/Indexes/FileSystemIndex/Locks/
-
18612/home/rohan/.beagle/Indexes/FileSystemIndex/
-
12012/home/rohan/.beagle/Indexes/KMailIndex/Locks/
-
303/home/rohan/.beagle/TextCache/54/
-
303/home/rohan/.beagle/TextCache/bc/
-
303/home/rohan/.beagle/TextCache/20/
-
303/home/rohan/.beagle/TextCache/62/
-
220/home/rohan/.beagle/Indexes/KMailIndex/SecondaryIndex/
编写自己的监控脚本:需求:由于使用Nginx的反向代理,生成本地缓存的策略,所以需要监控某个目录的新增或删除的变化,并将变化的文件名称输出到一个LOG中,带后续文件有修改时,可以通过该log定位文件地址,并删除该文件,及时向前端反映文件变更后的变化.脚本; inodify_cache_list.sh
-
#!/bin/sh
-
#Aslightlycomplexbutactuallyusefulexample
-
logfile="/opt/data/cache_list.txt"
-
temp_logfile="/opt/data/cache_tempfile.txt"
-
-
/usr/local/bin/inotifywait-mrq--format'%w%f'-emoved_to/opt/data/proxy_cache_dir/|whilereadfile;
-
do
-
echo"/usr/bin/printf\"delete"`grep-a'KEY:'${file}|sed-es/KEY:
-
done
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
这是监视文件夹变化的程序,指定监视的文件夹类型
linux下监控文件夹内变化,c怨言编写,在linux下用gcc编译,用Inotify机制实现监控文件夹变化,由于是linux课的大作业,所以有相关文档,文字说明,便于学习。
本篇文章是对使用Inotify 监控目录与文件的方法进行了详细的分析介绍,需要的朋友参考下
2.6.13起,加入了Inotify支持,通过Inotify可以监控文件系统中添加、删除,修改、移动等各种事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools正是实施这样监控的软件。...
2.6.13起,加入了Inotify支持,通过Inotify可以监控文件系统中添加、删除,修改、移动等各种事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况,而inotify-tools正是实施这样监控的软件。...
用iNotify 监控文件夹变化的demo。启动程序后操作同目录下的src文件夹里的文件即可看到监控结果。linux gcc。
java用于监控Linux下文件变化的工具包,包含文件写完成事件,使用方法: Inotify i = new Inotify(); int wd = i.addWatch(dir.getPath(), Close_Write); i.addListener(wd, new InotifyEventListener() { //实现 }...
Inotify,它是在内核 2.6.13 版本中引入的一个新功能,它为用户态监视文件系统的变化提供了强大的支持,允许监控程序打开一个独立文件描述符,并针对事件集监控一个或者多个文件,例如打开、关闭、移动/重命名、删除...
java用于监控Linux下文件变化的工具包,包含文件写完成时间,使用方法参考com.den_4.inotify_java.Demo类
Inotify 是一个 Linux特性,它监控文件系统操作,比如读取、写入和创建。这篇文章给大家介绍了Linux inotify监听文件状态的相关知识,需要的朋友参考下吧
目前 Linux 下有一些使用 Python 语言编写的 Linux 系统监控工具 比如 inotify-sync(文件系统安全监控软件)、glances(资源监控工具)在实际工作中,Linux 系统管理员可以根据自己使用的服务器的具体情况编写一下...
1.1 什么是实时同步:如何实现实时同步 要利用监控服务(inotify),监控同步数据服务器目录中信息的变化 ...异步的文件系统事件监控机制,linux内核从2.6.13起,加入了 Inotify支持,通过Inotify可
Inotify,它是在内核 2.6.13 版本中引入的一个新功能,它为用户态监视文件系统的变化提供了强大的支持,允许监控程序打开一个独立文件描述符,并针对事件集监控一个或者多个文件,例如打开、关闭、移动/重命名、删除...
最近项目中遇到一个用于监控日志文件的Python包pyinotify,结合自己的项目经验和网上的一些资料总结一下,总的原理是利用pyinotify模块监控日志文件夹,当日志到来的情况下,触发相应的函数进行处理,处理完毕后删除...
在python中文件监控主要有两个库,一个是pyinotify,一个是watchdog。pyinotify依赖于Linux平台的inotify,今天我们就来探讨下pyinotify.
Android系统API提供了FileObserver抽象类(Linux的INotify机制)来监听系统/sdcard中的文件或文件夹,FileObserver类能对sdcard中的文件及文件夹的打开、创建、移动和删除操作进行监控。下面看看代码实现: (1)...
pyinotify依赖于Linux平台的inotify,后者则对不同平台的的事件都进行了封装。因为我主要用于Windows平台,所以下面着重介绍watchdog(推荐大家阅读一下watchdog实现源码,有利于深刻的理解其中的原理)。 ...
php提供了inotify扩展,调用linux的inotify系统调用,监控文件的变化. 这时候就产生了一个想法,我开一个主进程监控文件变化,再开一个子进程运行swoole服务。主进程监听到文件变化之后,干掉子进程,然后再开一个子...
Linux 在使用此脚本之前,您需要执行sudo apt-get install inotify-tools 。 并在您的项目文件夹上运行它。 auto-deploy-by-rsync . user@everet.org:~/work/2959_add_new_type_awards苹果电脑在 Mac OS X 中,我们...
该工具可以监视指定文件夹中的文件更改,并将新添加(修改)的降价文件转换为html文件,以便可以直接访问网页这个工具能监控指定文件夹下的文件变化,将您添加(修改)的markdown文件转为html文件,使网页可以直接...