1. 安装inotify-tools:
sudo apt-get install inotify-tools
语法:inotifywait [-hcmrq] [-e] [-t] [--format] [--timefmt] file1 [file2] [file3] [...]
参数:
-h|--help
Show this help text.
显示帮助信息
@
Exclude the specified file from being watched.
排除不需要监视的文件,可以是相对路径,也可以是绝对路径。
--exclude
Exclude all events on files matching the extended regular expression
正则匹配需要排除的文件,大小写敏感。
--excludei
Like --exclude but case insensitive.
正则匹配需要排除的文件,忽略大小写。
-m|--monitor
Keep listening for events forever. Without this option, inotifywait will exit after one event is received.
接收到一个事件而不退出,无限期地执行。默认的行为是接收到一个事件后立即退出。
-d|--daemon
Same as --monitor, except run in the background logging events to a file specified by --outfile.Implies --syslog.
跟–-monitor一样,除了是在后台运行,需要指定-–outfile把事件输出到一个文件。也意味着使用了–syslog。
-r|--recursive
Watch directories recursively.
监视一个目录下的所有子目录。
--fromfile
Read files to watch from
从文件读取需要监视的文件或排除的文件,一个文件一行,排除的文件以@开头;'-'表示标准输入。
-o|--outfile
Print events to
输出事件到一个文件而不是标准输出。
-s|--syslog
Send errors to syslog rather than stderr.
输出错误信息到系统日志
-q|--quiet
Print less (only print events).
不会输出详细信息
-qq
Print nothing (not even events).
除了致命错误,不会输出任何信息。
--format
Print using a specified printf-like format string; read the man page for more details.
指定输出格式。
%w 表示发生事件的目录
%f 表示发生事件的文件
%e 表示发生的事件
%Xe 事件以“X”分隔
%T 使用由–timefmt定义的时间格式
--timefmt
指定时间格式,用于–-format选项中的%T格式。
strftime-compatible format string for use with %T in --format string.
-c|--csv
Print events in CSV format.
输出csv格式
-t|--timeout
When listening for a single event, time out after waiting for an event for
设置超时时间,如果为0,则无限期地执行下去。
-e|--event
Listen for specific event(s). If omitted, all events are listened for.
指定监视的事件。
可监听事件:
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 文件系统取消挂载,之后不再监听此文件系统。
示例:
创建一个临时目录,并监听该目录:
huey2672@huey2672-VM:~$ mkdir tmpdir
huey2672@huey2672-VM:~$ inotifywait -rm tmpdir/
在另一终端,执行以下操作:
huey2672@huey2672-VM:~$ cd tmpdir/
huey2672@huey2672-VM:~/tmpdir$ touch f1.txt
huey2672@huey2672-VM:~/tmpdir$ mv f1.txt f2.txt
输出的监听信息:
Setting up watches. Beware: since -r was given, this may take a while!
Watches established.
tmpdir/ CREATE f1.txt
tmpdir/ OPEN f1.txt
tmpdir/ CLOSE_WRITE,CLOSE f1.txt
tmpdir/ MOVED_FROM f1.txt
tmpdir/ MOVED_TO f2.txt
-h|--help
Show this help text.
输出帮助信息
-v|--verbose
Be verbose.
输出详细信息
@
Exclude the specified file from being watched.
排除不需要监视的文件,可以是相对路径,也可以是绝对路径。
--fromfile
Read files to watch from
从文件读取需要监视的文件或排除的文件,一个文件一行,排除的文件以@开头。
--exclude
Exclude all events on files matching the extended regular expression
正则匹配需要排除的文件,大小写敏感。
--excludei
Like --exclude but case insensitive.
正则匹配需要排除的文件,忽略大小写
-z|--zero
In the final table of results, output rows and columns even if they consist only of zeros (the default is to not output these rows and columns).
输出表格的行和列,即使元素为空
-r|--recursive
Watch directories recursively.
监视一个目录下的所有子目录。
-t|--timeout
Listen only for specified amount of time in seconds; if omitted or 0, inotifywatch will execute until receiving an interrupt signal.
设置超时时间
-e|--event
Listen for specific event(s). If omitted, all events are listened for.
只监听指定的事件
-a|--ascending
Sort ascending by a particular event, or 'total'.
以指定事件升序排列。
-d|--descending
Sort descending by a particular event, or 'total'.
以指定事件降序排列。
可监听事件:
(于inotifywait一样)
示例:
创建一个目录,再创建一个文件于该目录,并监听该目录:
huey2672@huey2672-VM:~$ mkdir tmpdir
huey2672@huey2672-VM:~$ touch tmpdir/foo.txt
huey2672@huey2672-VM:~$ inotifywatch -v -e access -e modify -t 60 -r tmpdir/
Establishing watches...
Setting up watch(es) on tmpdir/
OK, tmpdir/ is now being watched.
Total of 1 watches.
Finished establishing watches, now collecting statistics.
Will listen for events for 60 seconds.
在另一终端,执行一下操作:
huey2672@huey2672-VM:~$ date > tmpdir/foo.txt
huey2672@huey2672-VM:~$ cat tmpdir/foo.txt
输出的监听信息:
total access modify filename
3 1 2 tmpdir/