inotify监控文件变化

1、安装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  #安装

2、设置系统路径

vi /etc/profile

添加:

export PATH=/usr/local/inotify/bin:$PATH

source /etc/profile

参数说明

语法:inotifywait [-hcmrq] [-e ] [-t ] [--format ] [--timefmt ] [ ... ]

-h,–help
输出帮助信息
@
排除不需要监视的文件,可以是相对路径,也可以是绝对路径。
–fromfile 
从文件读取需要监视的文件或排除的文件,一个文件一行,排除的文件以@开头。
-m, –monitor
接收到一个事情而不退出,无限期地执行。默认的行为是接收到一个事情后立即退出。
-d, –daemon
跟–monitor一样,除了是在后台运行,需要指定–outfile把事情输出到一个文件。也意味着使用了–syslog。
-o, –outfile 
输出事情到一个文件而不是标准输出。
-s, –syslog
输出错误信息到系统日志
-r, –recursive
监视一个目录下的所有子目录。
-q, –quiet
指定一次,不会输出详细信息,指定二次,除了致命错误,不会输出任何信息。
–exclude 
正则匹配需要排除的文件,大小写敏感。
–excludei 
正则匹配需要排除的文件,忽略大小写。
-t , –timeout 
设置超时时间,如果为0,则无限期地执行下去。
-e , –event 
指定监视的事件。
-c, –csv
输出csv格式。
–timefmt 
指定时间格式,如(“%”后面的大小写代表不同的格式,如%y表示2位的年)

%Y-%m-%d  日期:2012-10-13

%H:%M:%S  时间:15:45:05

是否显示该参数指定的时间,取决于–format选项中是否指定了“%T”。
–format 
指定输出格式。
%w 表示发生事件的目录
%f 表示发生事件的文件
%e 表示发生的事件
%Xe 事件以“X”分隔
%T 显示由–timefmt定义的时间格式

参数说明

语法:inotifywatch [-hvzrqf] [-e ] [-t ] [-a ] [-d ] [ ... ]
参数:
-h, –help
输出帮助信息
-v, –verbose
输出详细信息
@
排除不需要监视的文件,可以是相对路径,也可以是绝对路径。
–fromfile 
从文件读取需要监视的文件或排除的文件,一个文件一行,排除的文件以@开头。
-z, –zero
输出表格的行和列,即使元素为空
–exclude 
正则匹配需要排除的文件,大小写敏感。
例:要排除/home/mjb目录下的test1,test2,cc目录,可这样写--exclude="/home/mjb/(test1/|test2/|cc/)"。多个目录或文件一定要用“|”分开,不能在命令行中用两个--exclude,否则最后的--exclude会覆盖其它的。系统只是在文件路径中查找是否有上面参数指定的字符,如果有就排除。因此在test1后面加了“/”。否则/home/mjb/test123也会被排除。
–excludei 
正则匹配需要排除的文件,忽略大小写。
-r, –recursive
监视一个目录下的所有子目录。
-t , –timeout 
设置超时时间
-e , –event 
只监听指定的事件。
-a , –ascending 
以指定事件升序排列。
-d , –descending 
以指定事件降序排列。

可监听事件
access 文件读取 
modify 文件更改。 
attrib  文件属性更改,如权限,时间戳等。 
close_write 以可写模式打开的文件被关闭,不代表此文件一定已经写入数据。  
close_nowrite  以只读模式打开的文件被关闭。  
close  文件被关闭,不管它是如何打开的。 
open  文件打开。 
moved_to  一个文件或目录移动到监听的目录,即使是在同一目录内移动,此事件也触发。 
moved_from 一个文件或目录移出监听的目录,即使是在同一目录内移动,此事件也触发。  
move  包括moved_to和 moved_from  
move_self 文件或目录被移除,之后不再监听此文件或目录。  
create  文件或目录创建 
delete  文件或目录删除 
delete_self  文件或目录移除,之后不再监听此文件或目录 
unmount  文件系统取消挂载,之后不再监听此文件系统。

使用例子

1、实时监控/home的所有事件(包括文件的访问,写入,修改,删除等)
  inotifywait -rm /home

2、监控/var/log/messeges中有关httpd的日志
#!/bin/sh 
  while inotifywait -e modify /var/log/messages; do 
     if tail -n1 /var/log/messages | grep httpd; then 
          kdialog --msgbox "Apache needs love!" 
     fi 
  done

3、统计/home文件系统的事件
  inotifywatch -v -e access -e modify -t 60 -r /home

4、监控/home/www目录及其下子目录

inotifywait -m -r -d -o /var/log/change.log –timefmt ‘%F %T’ –format ‘%T %w%f %e’  -e close_write -e create /home/www

其中/var/log/change.log是日志路径,/home/www是监控的路径

操作实例

inotifywait -m -r -d -o /var/log/change2.log --timefmt ‘%F %T‘ --format ‘%T %w %f %e‘ /data/backup

时间: 2024-08-07 23:28:49

inotify监控文件变化的相关文章

php 监控文件变化 并上传到服务器

最近有个思路.想要监控本地文件变化 并上传到指定服务器. 刚开始有这个想法的时候找了很多资料.关于 windows 和linux 上怎么监控文件变化的 最后选择了 比较MD5值的方法. 我也写了一段 但是也大同小异. 于是 其中借用了别人的代码 他的github 是 https://github.com/tansuo1989/mydemo/blob/master/php-demo/file_watch.php 话不多说 上代码 <?php /** * Created by PhpStorm. *

Java监控文件变化

NIO.2的Path类提供了如下的一个方法来监听文件系统的变化. register(WatcherService watcher,WatchEvent.Kind<?>... events):用watcher监听该path代表的目录下文件变化.event参数指定要监听哪些类型的事件. WatchService有三个方法来监听目录的文件变化事件. WatchKey poll():获取下一个WatchKey,如果没有WatchKey发生就立即返回null: WatcheKey poll(long t

利用nodejs监控文件变化并使用sftp上传到服务器

很久没写博客了,因为最近在用react+express做一个自己的工具型网站(其实就是夺宝岛抢拍器) 然后因为经常要改动,而且又要放到服务器上进行测试.总是要webpack,然后手动把文件上传上去,不胜其烦,索性搜索了下,直接写个能检测文件变化并自动进行上传的脚本好了. 首先,我们使用npm 安装两个别人封装好的模块. npm install ssh2-sftp-client npm install gaze 第一个模块的作用是sftp上传文件, 第二个模块的作用就是监听文件变化了.当然,你也可

Linux下inotify监控文件夹状态,发生变化后触发rsync同步

1.安装工具--inotifywget http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gztar -zxvf inotify-tools-3.14.tar.gzcd inotify-tools-3.14./configure --prefix=/usr/local/inotifymake && make install --rsync下载:http://rsync.samba

inotify监控目录变化重启服务器tornado项目

pycharm 配置了提交服务器项目每次pycharm修改后,虽然保存到服务器但是项目还得自己去服务器kill再启动.就花几分钟写了shell脚本用于监控项目目录变化并重启tornado项目的脚本 如果技术不懂需要请联系我 [[email protected] scripts]$ cat realtime_rsync.sh #!/bin/bash #para host01=10.0.0.253 #src=/backup src="/home/liujianzuo/htdocs/tornado/m

Linux监控文件变化及主动上报实现

一.说明 最近在做一些主机的自动化检查操作,每次都是定时主动去扫描.这种方式一是实时性不佳,二是扫描时会陡然给中心机很大的压力.后来想有没有一种主机上的配置如果发生变动就能主动上报的机制,如果能主动上报一又解决了实时性问题,二也解决了中心机压力的问题. 二.Shell脚本实现 2.1 基本使用 安装: yum install inotify-tools 使用格式: # 使用格式 inotifywait [-hcmrq] [-e <event> ] [-t <seconds> ] [

[转帖]监控Linux文件变化,防止系统被黑

监控Linux文件变化,防止系统被黑 https://os.51cto.com/art/201912/608702.htm改天尝试一下 inotify 运维服务器比较头疼的一个问题是系统被黑,沦为肉鸡或者矿机.除了加强安全基线配置,加强网络和端口加固,系统和应用bug修复,上IDS/IPS(入侵检测/防御系统)之外,另一个方面就是系统监控,一个完善准确的安全监控可以在主机层面及时发现入侵活动.予以告警以备及时处理. 作者:虫虫安全来源:今日头条|2019-12-31 14:00 收藏 分享 运维

java利用WatchService实时监控某个目录下的文件变化并按行解析(注:附源代码)

首先说下需求:通过ftp上传约定格式的文件到服务器指定目录下,应用程序能实时监控该目录下文件变化,如果上传的文件格式符合要求,将将按照每一行读取解析再写入到数据库,解析完之后再将文件改名. 一. 一开始的思路 设置一个定时任务,每隔一分钟读取下指定目录下的文件变化,如果有满足格式的文件,就进行解析. 这种方式很繁琐,而且效率低,效率都消耗在了遍历.保存状态.对比状态上了! 而且无法利用OS的很多功能. 二. WatchService介绍 1. 该类的对象就是操作系统原生的文件系统监控器!我们都知

Java 文件变化加载监控,实时监控文件加载之Commons-io

Java 文件监控,实时监控文件加载 ,Commons-io中已有此功能的实现,如下代码所示: package wy.util.filemonitor; import java.io.File; import org.apache.commons.io.monitor.FileAlterationListenerAdaptor; import org.apache.commons.io.monitor.FileAlterationObserver; import org.apache.log4j