inotifywait 是一个用于监控文件系统事件的命令行工具,它基于 Linux 的 inotify API。inotifywait 可以监控文件或目录的变化,如文件创建、修改、删除等事件,并在这些事件发生时执行相应的操作。以下是 inotifywait 的基本用法和一些常见示例:
基本语法
inotifywait [选项] 目标文件或目录
常用选项
-m 或 --monitor:持续监控,而不是退出。
-r 或 --recursive:递归监控目录及其子目录。
-e 或 --event:指定要监控的事件类型(如 create、delete、modify、move 等)。
-q 或 --quiet:减少输出信息。
-o 或 --outfile:将输出写入指定文件。
-t 或 --timeout:设置监控的超时时间(秒)。
常见事件类型
access:文件被访问。
modify:文件被修改。
attrib:文件属性被改变。
close_write:可写文件被关闭。
close_nowrite:不可写或只读文件被关闭。
create:文件或目录被创建。
delete:文件或目录被删除。
move:文件或目录被移动。
示例
1.监控当前目录下的文件变化
inotifywait -m -r .
2.监控特定目录下的文件创建和删除事件
inotifywait -m -r -e create -e delete /path/to/directory
3.监控特定文件的修改事件
inotifywait -m /path/to/file -e modify
4.监控日志文件的变化并实时处理
inotifywait -m /var/log/app.log -e modify --format '%w%f' | while read file; do
echo "File $file has been modified"
# 在这里添加处理逻辑
done
5.监控目录并执行脚本
inotifywait -m -r -e create /path/to/directory | while read path action file; do
echo "File $file created in $path"
# 在这里添加处理逻辑
done
6.监控文件移动事件
inotifywait -m /path/to/file -e move
7.监控文件删除事件
inotifywait -m /path/to/file -e delete
8.监控文件访问事件
inotifywait -m /path/to/file -e access
9.监控文件属性变化
inotifywait -m /path/to/file -e attrib
10.监控文件关闭事件
inotifywait -m /path/to/file -e close
输出格式
inotifywait 的输出格式通常包括以下信息:
文件路径:发生事件的文件或目录路径。
事件类型:触发的事件类型(如 CREATE、DELETE、MODIFY 等)。
文件名:发生事件的文件名。