温馨提示×

inotify如何与脚本结合使用

小樊
39
2025-11-30 16:12:46
栏目: 编程语言

inotify 是 Linux 系统中的一个功能,用于监控文件系统事件,如文件或目录的创建、修改、删除等。你可以将 inotify 与脚本来实现对文件系统变化的自动响应。

以下是一个简单的示例,展示如何使用 inotifywaitinotify-tools 包的一部分)与 Bash 脚本结合使用,以监控目录并在检测到新文件创建时执行操作。

步骤 1: 安装 inotify-tools

在大多数 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

步骤 2: 创建一个 Bash 脚本

创建一个名为 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

步骤 3: 赋予脚本执行权限

chmod +x monitor.sh

步骤 4: 运行脚本

./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 和脚本来实现对文件系统变化的自动化处理。

0