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的主要内容,如果未能解决你的问题,请参考以下文章