要使用inotifywait
监视多个目录下特定文件的创建、删除和修改操作,并将结果记录到日志文件中,可以按照以下步骤操作:
安装inotify-tools:确保你的系统中已经安装了inotify-tools
。如果未安装,可以通过包管理器安装,例如在Ubuntu中使用sudo apt-get install inotify-tools
。
编写监视脚本:创建一个脚本文件,比如monitor.sh
,并在其中使用inotifywait
命令来监视指定目录。可以使用-m
参数让inotifywait
在后台运行,并使用-e
参数指定要监视的事件类型,如create
、delete
、modify
。
递归监视:如果需要递归监视子目录,可以添加-r
参数。
过滤特定文件:可以使用-e
参数后跟事件类型和文件名的模式,例如-e create --exclude '.*\.swp'
来排除所有.swp
文件。
执行命令:当检测到指定事件时,可以使用--command
参数执行一个命令,例如将事件信息追加到日志文件中。
日志记录:确保--command
参数中的命令能够将事件信息正确地追加到日志文件中。
下面是一个示例脚本,用于监视/path/to/dir1
和/path/to/dir2
目录下名为targetfile
的文件的创建、删除和修改操作,并将结果记录到/path/to/logfile.log
日志文件中:
#!/bin/bash
inotifywait -m -e create -e delete -e modify --format '%w%f %e' -r -m /path/to/dir1 /path/to/dir2 | while read path action file
do
if [[ "$file" == "targetfile" ]]; then
echo "$action $file in $path" >> /path/to/logfile.log
fi
done
请根据你的实际需求调整脚本中的目录路径和文件名。这个脚本会持续运行,直到你手动停止它(例如,通过按下Ctrl+C
)。如果你希望脚本在后台运行,可以考虑使用nohup
命令或将其设置为系统服务。