inotify 是 Linux 系统中的一个功能,用于监控文件系统事件,如文件或目录的创建、修改、删除等。你可以将 inotify 与脚本来实现对文件系统变化的自动响应。
以下是一个简单的示例,展示如何使用 inotifywait(inotify-tools 包的一部分)与 Bash 脚本结合使用,以监控目录并在检测到新文件创建时执行操作。
在大多数 Linux 发行版中,你可以使用包管理器来安装 inotify-tools。
对于基于 Debian 的系统(如 Ubuntu):
sudo apt-get update
sudo apt-get install inotify-tools
对于基于 Red Hat 的系统(如 CentOS):
sudo yum install epel-release
sudo yum install inotify-tools
创建一个名为 monitor.sh 的脚本,并添加以下内容:
#!/bin/bash
# 监控的目录
MONITOR_DIR="/path/to/your/directory"
# 使用 inotifywait 监控目录
inotifywait -m -e create --format '%w%f' "$MONITOR_DIR" | while read NEW_FILE
do
# 当检测到新文件创建时执行的操作
echo "New file created: $NEW_FILE"
# 你可以在这里添加更多的命令,比如处理文件、发送通知等
done
chmod +x monitor.sh
./monitor.sh
-m: 使 inotifywait 持续运行并监控事件。-e create: 指定只监控文件创建事件。--format '%w%f': 自定义输出格式,%w 表示文件所在的目录,%f 表示文件名。while read NEW_FILE: 读取 inotifywait 输出的新文件路径,并在循环中处理。你可以根据需要监控其他事件,例如:
modify: 文件修改delete: 文件删除move: 文件移动例如,监控文件修改和删除事件:
inotifywait -m -e modify,delete --format '%w%f' "$MONITOR_DIR"
你可以将 inotifywait 的输出与其他命令结合使用,实现更复杂的逻辑。例如,自动备份新创建的文件:
#!/bin/bash
MONITOR_DIR="/path/to/your/directory"
BACKUP_DIR="/path/to/backup/directory"
inotifywait -m -e create --format '%w%f' "$MONITOR_DIR" | while read NEW_FILE
do
echo "New file created: $NEW_FILE"
# 创建备份目录(如果不存在)
mkdir -p "$BACKUP_DIR"
# 复制文件到备份目录
cp "$NEW_FILE" "$BACKUP_DIR"
echo "File backed up to $BACKUP_DIR"
done
通过这种方式,你可以灵活地使用 inotify 和脚本来实现对文件系统变化的自动化处理。