linux

如何通过inotify实现自动化任务

小樊
42
2025-08-03 10:11:52
栏目: 编程语言

inotify 是 Linux 系统中的一种文件系统事件监控机制,它可以实时监控文件或目录的变化,如创建、删除、修改等。通过 inotify,你可以实现很多自动化任务,例如自动备份、自动编译、实时同步等。下面是一个简单的示例,展示如何使用 inotifywait 命令实现一个自动化任务。

  1. 首先,确保你的系统中已经安装了 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
    
  2. 创建一个名为 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 变量替换为你想要监控的目录路径。

  3. 为脚本添加可执行权限:

    chmod +x inotify_example.sh
    
  4. 运行脚本:

    ./inotify_example.sh
    

现在,每当监控目录中的文件发生变化时,脚本都会自动执行相应的命令。你可以根据需要修改 ACTION_ON_CREATEACTION_ON_DELETE 变量,以实现你想要的自动化任务。

0
看了该问题的人还看了