inotify 是 Linux 系统中用于监控文件系统事件的一种机制
- 安装 inotify-tools:
在大多数 Linux 发行版中,可以使用包管理器安装 inotify-tools。例如,在基于 Debian 的系统(如 Ubuntu)上,可以使用以下命令安装:
sudo apt-get install inotify-tools
- 编写脚本:
创建一个名为 monitor.sh
的脚本文件,并添加以下内容:
#!/bin/bash # 检查参数数量 if [ "$#" -ne 2 ]; then echo "Usage: $0" exit 1 fi directory=$1 event_mask=$2 # 将事件掩码转换为十进制 event_mask_decimal=$(echo "0x$event_mask" | tr '[:upper:]' '[:lower:]') # 使用 inotifywait 监控指定目录的事件 inotifywait -m -r -e create -e modify -e moved_to --format '%w%f' "$directory" | while read file; do # 检查事件类型 event_type=$(echo "0x$event_mask_decimal" | sed 's/[^0-9a-fA-F]//g') # 根据事件类型输出相应信息 case "$event_type" in 1) echo "CREATE: $file" ;; 2) echo "MODIFY: $file" ;; 3) echo "MOVED_TO: $file" ;; *) echo "UNKNOWN: $file" ;; esac done
这个脚本接受两个参数:要监控的目录和要监控的事件掩码。事件掩码是一个十六进制数,表示要监控的事件类型。例如,要监控创建、修改和移动事件,可以使用以下命令:
chmod +x monitor.sh ./monitor.sh /path/to/directory 0x01|0x02|0x04
- 运行脚本:
现在你可以运行这个脚本来监控指定目录的文件系统事件。脚本将持续运行,直到你手动停止它。
注意:长时间运行的脚本可能会消耗大量系统资源。在生产环境中使用时,请确保进行适当的优化和资源管理。