askwiki
inotifywait如何设置以监视多个目录下特定文件的创建、删除和修改操作,并将结果记录到日志文件中?

Moonshot回答

要使用inotifywait监视多个目录下特定文件的创建、删除和修改操作,并将结果记录到日志文件中,可以按照以下步骤操作:

  1. 安装inotify-tools:确保你的系统中已经安装了inotify-tools。如果未安装,可以通过包管理器安装,例如在Ubuntu中使用sudo apt-get install inotify-tools

  2. 编写监视脚本:创建一个脚本文件,比如monitor.sh,并在其中使用inotifywait命令来监视指定目录。可以使用-m参数让inotifywait在后台运行,并使用-e参数指定要监视的事件类型,如createdeletemodify

  3. 递归监视:如果需要递归监视子目录,可以添加-r参数。

  4. 过滤特定文件:可以使用-e参数后跟事件类型和文件名的模式,例如-e create --exclude '.*\.swp'来排除所有.swp文件。

  5. 执行命令:当检测到指定事件时,可以使用--command参数执行一个命令,例如将事件信息追加到日志文件中。

  6. 日志记录:确保--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命令或将其设置为系统服务。

继续提问

津ICP备19006161号