Linux学习笔记:Inotify

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux学习笔记:Inotify相关的知识,希望对你有一定的参考价值。

1.    什么是inotify

        inotify是linux 2.6.13内核开始支持的特性,可以监视指定文件或者目录发生变化而产生消息,一般结合rsync使用,实现文件实时同步。

2.    inotify的安装

        inotify最新版本是3.14,无法通过yum进行安装,只能从网上下载所得。可搜索inotify-tools-3.14.tar.gz,大约是350KB大小。安装前需要确认一下系统是否支持可通过以下方式

        查看当前linux核心版本,只要版本大于等于2.6.13即可

        [[email protected] ~]# uname -r

        2.6.32-573.18.1.el6.x86_64

        查看核心参数,这些参数可以修改以进行优化,而且这些核心参数即使没有安装Inotify也是存在的。

        [[email protected] ~]# cat /proc/sys/fs/inotify/max_queued_events 

        16384   #

        [[email protected] ~]# cat /proc/sys/fs/inotify/max_user_instances 

        128

        [[email protected] ~]# cat /proc/sys/fs/inotify/max_user_watches 

        8192

        安装非常简单,解压inotify-tools-3.14.tar.gz,进入所得的文件夹,然后./configure --prefix=/usr/local/inotify-tools-3.14

        然后make && make install

        正常情况下会自动安装到 /usr/local/inotify-tools-3.14这个目录。

        再执行一下ln -s /usr/local/inotify-tools-3.14 /usr/local/inotify 创建一个软连接即可。

3.    inotify的使用

        inotify有两个工具inotifywait和inotifywatch,关于它们的详细用法可以参考--help或者它自带的man资料。可以把MANPATH /usr/local/inotify/share/man加到/etc/man.conf里,就可以直接man这两个工具的名字。

        一般结合rsync的是 inotifywait,用法是inotifywait  [-hcmrq]  [-e <event> ] [-t <seconds> ] [--format <fmt> ] [--timefmt <fmt> ] <file> [ ... ]

        关于参数的解释

@<file>

精确排除文件,可使用相对路径或绝对路径,如果文件名是以@开头的,需要使用绝对路径。

--fromfile <file>

从指定的文件读取要排除的文件名,一行一个文件名。如果指定的<file>不是文件名而是-,那么将读取stdin

-m, --monitor

监控模式

-d, --daemon

daemon模式,把变化的信息输出到文件,一定要配合-o来使用

-s, --syslog

将错误输出到syslog中去

-r, --recursive

递归,用于监视目录。

-q, --quiet

仅可能少的显示信息,如果指定两次,则完全不输出任何信息。

--exclude <pattern>

根据POSIX扩展正则表达式来排除文件

--excludei <pattern>

同上,而且忽略大小写

-t <seconds>, --timeout <seconds>

当指定的事件在指定时间内没有发生,则退出。

 -e <event>, --event <event>

指定事件,

--timefmt <fmt>

如果需要输出时间,则指定其格式,参考date命令的格式参数

--format <fmt>

输出信息的格式参数。

%w 常用于显示发生变化的目录

%f  常用于显示发生变化的文件名

%e  显示发生的事件,用逗号分隔显示

%Xe X为自定义的符号,用来分隔显示

%T  时间

        关于事件的解释

access

文件被访问

modify 

文件被修改

close_write

文件被关闭并被写入

open

文件被打开

move

被移动

create

创建

delete 

删除

unmount

卸载

一个例子

[[email protected] ~]# /usr/local/inotify/bin/inotifywait -mrq --exclude ‘(^.*/~.*|^.*\.pdf$)‘ -e create,delete,modify,move --format ‘%w%f‘ /data

监视/data目录所发生的创建、删除、修改、移动事件,一旦发生,即输出文件的绝对路径,但排除了以~$开头的文件和.pdf结尾的文件。

注:~$开头的文件常见于office的临时文件,通常打开一个office文件时就会立即创建一个以~$开头的临时文件


以上是关于Linux学习笔记:Inotify的主要内容,如果未能解决你的问题,请参考以下文章

rsync+inotify 实时同步脚本学习笔记

学习笔记汇总

Mysql DBA 高级运维学习笔记-MySQL高可用工具drbd实战

linux学习笔记二

linux学习笔记一

Linux学习笔记