inotify
是 Linux 内核提供的一种文件系统事件监控机制,可以用于实时监控文件或目录的变化。在 Debian 系统中,你可以使用 inotify-tools
包来实现这一功能。以下是详细步骤:
inotify-tools
首先,你需要安装 inotify-tools
包。你可以使用 apt
命令来安装:
sudo apt update
sudo apt install inotify-tools
inotifywait
监控文件或目录inotifywait
是 inotify-tools
包中的一个工具,用于监控文件系统事件。以下是一些常用的命令示例:
inotifywait -m /path/to/file -e modify,attrib,close_write,move,create,delete
-m
:持续监控。-e
:指定要监控的事件类型,例如 modify
(修改)、attrib
(属性变化)、close_write
(关闭写入)、move
(移动)、create
(创建)、delete
(删除)。inotifywait -m /path/to/directory -e create,delete,modify,move
你可以使用逗号分隔多个事件类型:
inotifywait -m /path/to/directory -e create,delete,modify,move,attrib,close_write
你可以添加 -v
选项来输出更详细的信息:
inotifywait -m -v /path/to/directory -e create,delete,modify,move
如果你想将监控的输出保存到文件中,可以使用重定向操作符 >
:
inotifywait -m -v /path/to/directory -e create,delete,modify,move > /path/to/logfile.log 2>&1 &
inotifywatch
统计事件inotifywatch
是另一个 inotify-tools
包中的工具,用于统计文件系统事件。以下是一些常用的命令示例:
inotifywatch -m -t 60 -e create,delete,modify,move /path/to/directory
-m
:持续监控。-t
:指定监控的总时间(秒)。-e
:指定要统计的事件类型。你可以添加 -v
选项来输出更详细的信息:
inotifywatch -m -v -t 60 -e create,delete,modify,move /path/to/directory
以下是一个简单的 Bash 脚本示例,用于监控目录并在检测到文件创建事件时发送通知:
#!/bin/bash
DIRECTORY="/path/to/directory"
LOGFILE="/path/to/logfile.log"
inotifywait -m -e create --format '%w%f %e' "$DIRECTORY" |
while read FILE EVENT; do
echo "File $FILE was $EVENT at $(date)" >> "$LOGFILE"
# 发送通知(例如使用 notify-send)
notify-send "File Created" "File $FILE was created"
done
将上述脚本保存为 monitor.sh
,然后赋予执行权限并运行:
chmod +x monitor.sh
./monitor.sh
通过这些步骤,你可以在 Debian 系统中使用 inotify
实现实时监控文件或目录的变化。