linux

如何使用inotify监控文件夹变化

小樊
39
2025-07-03 12:05:53
栏目: 编程语言

inotify 是 Linux 系统中的一个功能,用于监控文件系统事件,如文件或目录的创建、删除、修改等。要使用 inotify 监控文件夹变化,你可以使用 inotify-tools 这个命令行工具集,或者使用编程语言(如 Python)中的相关库。

以下是使用 inotify-tools 和 Python 的示例:

使用 inotify-tools

  1. 首先,确保你已经安装了 inotify-tools。在大多数 Linux 发行版中,可以使用以下命令安装:
sudo apt-get install inotify-tools  # 对于基于 Debian 的系统(如 Ubuntu)
sudo yum install inotify-tools      # 对于基于 RHEL 的系统(如 CentOS)
  1. 使用 inotifywait 命令监控文件夹变化。以下是一个简单的示例,监控名为 test_folder 的文件夹,并在检测到事件时输出相关信息:
inotifywait -m -r -e create,delete,modify --format '%w%f %e' test_folder

参数说明:

使用 Python

  1. 安装 inotify 库:
pip install inotify
  1. 编写 Python 脚本监控文件夹变化:
import os
from inotify_simple import INotify, flags

# 监控的文件夹路径
folder_to_monitor = 'test_folder'

# 创建 INotify 实例
inotify = INotify()

# 添加监控规则
watch_flags = flags.CREATE | flags.DELETE | flags.MODIFY
wd = inotify.add_watch(folder_to_monitor, watch_flags)

try:
    while True:
        # 读取事件
        for event in inotify.read():
            file_path, event_mask = event.name, event.mask

            # 根据事件类型输出相应信息
            if event_mask & flags.CREATE:
                print(f'文件创建: {file_path}')
            elif event_mask & flags.DELETE:
                print(f'文件删除: {file_path}')
            elif event_mask & flags.MODIFY:
                print(f'文件修改: {file_path}')
except KeyboardInterrupt:
    # 移除监控规则并退出
    inotify.rm_watch(wd)

这个脚本会持续监控 test_folder 文件夹,并在检测到创建、删除或修改事件时输出相应信息。

0
看了该问题的人还看了