inotify
是 Linux 系统中的一种文件系统事件监控机制,它可以实时监控文件或目录的变化,如创建、删除、修改等。通过 inotify
,你可以实现很多自动化任务,例如自动备份、自动编译、实时同步等。下面是一个简单的示例,展示如何使用 inotifywait
命令实现一个自动化任务。
首先,确保你的系统中已经安装了 inotify-tools
。在大多数 Linux 发行版中,可以使用以下命令安装:
sudo apt-get install inotify-tools # Debian/Ubuntu
sudo yum install inotify-tools # CentOS/RHEL
sudo pacman -S inotify-tools # Arch Linux
创建一个名为 inotify_example.sh
的 shell 脚本,并添加以下内容:
#!/bin/bash
# 监控的目录
MONITOR_DIR="/path/to/your/directory"
# 当检测到文件创建事件时执行的命令
ACTION_ON_CREATE="echo 'File created: %f'"
# 当检测到文件删除事件时执行的命令
ACTION_ON_DELETE="echo 'File deleted: %f'"
# 使用 inotifywait 监控目录
inotifywait -m -r -e create,delete --format '%w%f' "${MONITOR_DIR}" | while read FILE
do
# 检查事件类型
if [[ $(inotifywait -e modify "${FILE}" 2>/dev/null) ]]; then
# 如果文件被修改,执行 ACTION_ON_CREATE 命令
eval "${ACTION_ON_CREATE}"
fi
if [[ $(inotifywait -e delete "${FILE}" 2>/dev/null) ]]; then
# 如果文件被删除,执行 ACTION_ON_DELETE 命令
eval "${ACTION_ON_DELETE}"
fi
done
请将 MONITOR_DIR
变量替换为你想要监控的目录路径。
为脚本添加可执行权限:
chmod +x inotify_example.sh
运行脚本:
./inotify_example.sh
现在,每当监控目录中的文件发生变化时,脚本都会自动执行相应的命令。你可以根据需要修改 ACTION_ON_CREATE
和 ACTION_ON_DELETE
变量,以实现你想要的自动化任务。