1.关于inotify
Inotify是一种文件变化通知机制,Linux内核从2.6.13开始引入。
inotify-tools提供两种工具,一是inotifywait,它是用来监控文件或目录的变化,二是inotifywatch,它是用来统计文件系统访问的次数。1
grep INOTIFY_USER /boot/config-$(uname -r)
如果输出(‘CONFIG_INOTIFY_USER=y’),表示支持Inotify机制。
2.安装inotify-tools
1 | yum install epel-release -y |
3.inotifywait使用
1 | inotifywait -h |
可监听事件
| 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 | 文件系统取消挂载,之后不再监听此文件系统。 |
案例:
通过ftp上传了两种不同的文件(ftp一直在工作中),比如:xxx.zip文件和xxx.dat文件,需要将xxx.dat文件移动到其他目录进行单独处理。
1 | cat inotify.sh |
4.inotifywatch使用
1 | inotifywatch -h |
1 | inotifywatch -r -v -e modify,attrib,close,moved_to,create,delete /test/ |