游乐游手机版
首页/编程语言/文章详情

inotify如何检测文件删除操作的原理与实现方法

时间:2026-07-22 06:04
通过inotify机制可监控文件删除,核心事件为IN_DELETE(目录内文件删除)和IN_DELETE_SELF(监控对象自身删除)。使用inotify-simple库的add_watch注册事件,循环读取事件即可检测到文件删除操作。

在Linux系统文件监控中,inotify机制可以说最常用的解决方案之一,能够高效捕捉文件系统变化,尤其是删除操作。那么,如何利用inotify检测文件删除?关键在于掌握两个核心事件:IN_DELETE(文件被删除)和IN_DELETE_SELF(监控对象自身被删除)。

inotify如何检测文件删除操作

下面通过一个具体的Python示例,使用inotify-simple库来演示,代码简洁直观。

首先,请确保已安装inotify-simple库,若未安装,可通过pip快速安装:

pip install inotify

然后,创建一个Python脚本(例如inotify_example.py),并粘贴以下代码:

import os
import sys
from inotify_simple import INotify, flags

def main():
    # 指定要监控的目录
    path_to_watch = "/path/to/your/directory"
    
    # 创建 INotify 实例
    inotify = INotify()
    
    # 设置监控的事件类型:创建、删除、自身删除、移动
    watch_flags = flags.CREATE | flags.DELETE | flags.DELETE_SELF | flags.MOVED_FROM
    wd = inotify.add_watch(path_to_watch, watch_flags)
    
    try:
        while True:
            # 循环读取事件
            for event in inotify.read():
                if event.mask & flags.DELETE_SELF:
                    print(f"文件 {event.name} 被删除")
                elif event.mask & flags.DELETE:
                    print(f"文件 {event.name} 被删除(其他进程)")
    except KeyboardInterrupt:
        # 退出时移除监控
        inotify.rm_watch(wd)
        sys.exit(0)

if __name__ == "__main__":
    main()

请将/path/to/your/directory替换为实际要监控的目录路径。运行脚本后,一旦有文件被删除,终端会立即输出提示信息。其中,IN_DELETE_SELF事件表示被监控对象自身被删除,而IN_DELETE事件则用于捕获目录内文件的删除动作。

需要特别说明的是,本示例采用了inotify-simple库,它是对inotify的轻量级封装,易于上手。当然,你也可以选择pyinotifyinotify-cpp等替代库,但核心原理与用法基本一致。掌握IN_DELETEIN_DELETE_SELF这两个事件,以及如何通过add_watch注册它们,即可灵活运用inotify检测文件删除操作。

来源:https://www.yisu.com/ask/31689055.html
上一篇如何在Linux系统中配置Node.js数据库连接完整步骤教程 下一篇MinIO日志查看方法与存储位置
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
FileZilla断点续传设置与操作指南
编程语言 · 2026-07-25

FileZilla断点续传设置与操作指南

FileZilla支持断点续传,需客户端与服务器均开启REST命令。设置中确保启用断点续传及继续传输选项。中断后自动或手动从断点恢复。注意服务器支持、传输模式匹配及文件完整性校验。

Debian系统C++编译器位置查找方法
编程语言 · 2026-07-25

Debian系统C++编译器位置查找方法

在Debian系统中,通过apt安装的C++编译器g++默认位于 usr bin g++,可使用which或whereis命令验证路径。g++属于build-essential软件包,若未安装则需执行sudoaptinstallbuild-essential。该包还包含gcc、make等编译工具链,g++是GNUC++编译器,实际是符号链接指向具体版本,验证

Debian系统安装C++环境的方法
编程语言 · 2026-07-25

Debian系统安装C++环境的方法

在Debian系统安装C++开发环境:先sudoaptupdate更新包列表,再sudoaptinstallbuild-essential安装编译工具链,或单独安装g++。用g++--version验证。可选安装VSCode、GDB、CMake等工具并配置默认编译器版本。

Debian系统C++开发环境配置指南
编程语言 · 2026-07-25

Debian系统C++开发环境配置指南

在Debian系统中,先执行aptupdate更新软件包列表,再安装build-essential元包即可获得GCC、G++、Make和GDB。通过运行g++--version命令验证编译器安装成功。可选安装VisualStudioCode、CLion等编辑器及CMake构建工具,并编写一个简单的HelloWorld程序,使用g++编译运行以验证环境配置正确

通过cpustat工具查看CPU状态的具体方法与详细步骤
编程语言 · 2026-07-25

通过cpustat工具查看CPU状态的具体方法与详细步骤

cpustat是sysstat包中的CPU监控工具,可按固定间隔输出带时间戳的CPU使用率统计。安装后运行cpustat即可实时显示各核心信息,常用指标包括%usr、%sys、%iowait、%steal和%idle,用于定位用户态、内核态或I O瓶颈。高级选项-c可显示单核统计,-m可同时查看内存使用,适合脚本采集和性能分析。