inotify
是 Linux 内核提供的一种文件系统事件监控机制,它可以实时监控文件或目录的变化,如创建、删除、修改等。在 Debian 系统中,你可以使用 inotify-tools
这个软件包来方便地使用 inotify
。
以下是在 Debian 上安装和使用 inotify-tools
的步骤:
inotify-tools
sudo apt update
inotify-tools
:sudo apt install inotify-tools
inotifywait
和 inotifywatch
inotify-tools
包含两个主要的工具:inotifywait
和 inotifywatch
。
inotifywait
inotifywait
用于监视文件或目录的事件,并在事件发生时执行指定的命令。
基本用法:
inotifywait [选项] 目标路径
常用选项:
-m, --monitor
:持续监视,直到手动终止。-r, --recursive
:递归监视目录及其子目录。-e, --event=EVENTS
:指定要监视的事件,多个事件用逗号分隔(如 create,delete,modify
)。-q, --quiet
:不输出任何信息,只返回退出状态码。-o, --output=FILE
:将输出重定向到指定文件。示例: 监视当前目录下的所有文件和子目录,当有文件被创建时,打印出事件信息:
inotifywait -m -r -e create .
inotifywatch
inotifywatch
用于统计文件系统事件的发生次数。
基本用法:
inotifywatch [选项] 监视时间 目标路径
常用选项:
-t, --timeout=SECONDS
:设置监视的总时间(秒)。-m, --monitor
:持续监视,直到手动终止。-r, --recursive
:递归监视目录及其子目录。-e, --event=EVENTS
:指定要监视的事件。示例: 监视当前目录下的所有文件和子目录,持续 60 秒,并统计事件发生的次数:
inotifywatch -t 60 -m -r -e create,delete,modify .
你可以编写一个简单的脚本来自动化某些任务。例如,当检测到某个文件被修改时,自动备份该文件:
#!/bin/bash
TARGET_FILE="/path/to/your/file.txt"
BACKUP_DIR="/path/to/backup"
inotifywait -m -e modify "$TARGET_FILE" |
while read -r directory events filename; do
if [ "$filename" = "file.txt" ]; then
cp "$TARGET_FILE" "$BACKUP_DIR/$(date +%Y%m%d%H%M%S)_$filename.bak"
echo "Backup created: $BACKUP_DIR/$(date +%Y%m%d%H%M%S)_$filename.bak"
fi
done
将上述脚本保存为 backup_script.sh
,然后赋予执行权限并运行:
chmod +x backup_script.sh
./backup_script.sh
这样,每当 file.txt
被修改时,脚本会自动将其备份到指定的备份目录中。
通过这些步骤,你可以在 Debian 系统中方便地使用 inotify
来监控文件系统的变化。