1 介绍与安装
inotify tools基本介绍:
- Inotify是一种强大的、细粒度的、异步文件系统监控机制
- 可以监控文件系统的一切变化(增删改查、权限、移动复制等)
- Linux内核从2.6.13开始引入了inotify机制
- inotify-tools在命令行下提供对Inotify的调用,实现了文件系统事件的监控
inotify tools的安装:
2 基本用法
inotify tools基本命令:
- inotify-tools主要包括inotifywait和inotifywatch这两条命令
- inotifywait命令可以用来收集有关文件访问信息
- inotifywatch命令用于收集关于被监视的文件系统的统计数据
inotify tools使用示例:
- 实时监控/home的所有事件(包括文件的访问,写入,修改,删除等)
inotifywait -rm /home
- 监控/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
- 统计/home文件系统的事件
inotifywatch -v -e access -e modify -t 60 -r /home
- 监控 /opt文件下所有子目录的文件系统,仅考虑指定事件
inotifywait -dmrq -e 'delete,moved_to,moved_to' -o '/inotifywait.log' --timefmt '%Y-%m-%d %H:%M' --format '%T %W%f %e' /opt
3 参数详情
3.1 inotifywait
语法:
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 | 指定时间格式,用于--format选项中的%T格式。 |
--format | 指定输出格式。 |
输出格式说明:
- %w 表示发生事件的目录
- %f 表示发生事件的文件
- %e 表示发生的事件
- %Xe 事件以“X"分隔
- %T 使用由--timefmt定义的时间格式
3.2 inotifywatch
语法:
inotifywatch [-hvzrqf] [-e ] [-t ] [-a ] [-d ] [ ... ]
参数 | 参数说明 |
---|---|
-h, --help | 输出帮助信息 |
-v, --verbose | 输出详细信息 |
@ | 排除不需要监视的文件,可以是相对路径,也可以是绝对路径。 |
--fromfile | 从文件读取需要监视的文件或排除的文件,一个文件一行,排除的文件以@开头。 |
-z, --zero | 输出表格的行和列,即使元素为空 |
--exclude | 正则匹配需要排除的文件,大小写敏感。 |
--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 | 文件系统取消挂载,之后不再监听此文件系统。 |