温馨提示×

Linux inotify如何检测文件变化

小樊
47
2025-11-10 20:27:00
栏目: 智能运维

Linux的inotify(输入通知)是一个内核子系统,用于监控文件系统事件

要使用inotify检测文件变化,你需要使用Linux的inotify API。以下是一个简单的Python示例,使用inotify库来监控文件变化:

首先,确保安装了inotify库。在Debian/Ubuntu系统上,可以使用以下命令安装:

sudo apt-get install inotify-tools python3-inotify

然后,创建一个名为inotify_example.py的Python脚本,并添加以下代码:

import os
import sys
from inotify_simple import INotify, flags

# 检查命令行参数
if len(sys.argv) < 2:
    print("Usage: python3 inotify_example.py <file>")
    sys.exit(1)

# 获取要监控的文件路径
file_path = sys.argv[1]

# 创建inotify实例
inotify = INotify()

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

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

            # 根据事件类型输出相应信息
            if mask & flags.MODIFY:
                print(f"File {name} was modified.")
            if mask & flags.CREATE:
                print(f"File {name} was created.")
            if mask & flags.DELETE:
                print(f"File {name} was deleted.")
            if mask & flags.MOVE_SELF:
                print(f"File {name} was moved.")
except KeyboardInterrupt:
    # 移除监控规则并退出
    inotify.rm_watch(wd)
    print("Monitoring stopped.")

现在,你可以运行此脚本并指定要监控的文件:

python3 inotify_example.py <file>

脚本将输出与指定文件相关的事件。你可以根据需要修改监控规则和事件处理逻辑。

请注意,这个示例仅适用于Python 3,并且需要安装inotify库。对于其他编程语言,你需要查找相应的库或使用系统调用。

0