pyinotify 模块来实现对文件的监控

一、概述

        Pyinotify依赖于Linux内核的功能—inotify(内核2.6.13合并)。是一个事件驱动的通知器,其通知接口通过三个系统调用,从内核空间到用户空间        pyinotify结合这些系统调用,并提供一个顶级的抽象和一个通用的方式来处理这些功能。

        我们使用pyinotify 实现对文件修改的监控,防止我们的文件在我们不知情的情况下被修改破坏。当然这个例子除了基本的代码编写,我们也提供了代码优化的几个思路,希望可以给大家带来帮助。

二、使用方法

import pyinotify

wm = pyinotify.WatchManager()
class MyEventHandler(pyinotify.ProcessEvent):       #继承父类
    def process_IN_DELETE(self,event):           #只可以检测本地系统里的操作
        pathname=event.pathname   #文件路径和名称
        path=event.path            #路径
        name =event.name           #文件名称
        print("删除文件!",event.name)  
    def process_IN_MODIFY(self,event):
        print("修改文件!",event.name)

handler = MyEventHandler()
notifier = pyinotify.Notifier(wm,handler)

mask = pyinotify.IN_DELETE | pyinotify.IN_MODIFY   #条件规则
wm.add_watch("/tmp",mask)
#wm.add_watch("/opt/lampp",mask)  #同时监控多个目录

notifier.loop()

注释:执行该脚本时候,当tmp目录下有文件被删除,或者是被修改的时候,就会直接弹出提示

三、内置的监控条件

IN_ACCESS 文件访问

IN_MODIFY 文件被写入

IN_ATTRIB,文件属性被修改,如chmod、chown、touch 等

IN_CLOSE_WRITE,可写文件被close

IN_CLOSE_NOWRITE,不可写文件被close

IN_OPEN,文件被open

IN_MOVED_FROM,文件被移走,如mv

IN_MOVED_TO,文件被移来,如mv、cp (可以用来检测应用类的文件上传)

IN_CREATE,创建新文件

IN_DELETE,文件被删除,如rm

IN_DELETE_SELF,自删除,即一个可执行文件在执行时删除自己

IN_MOVE_SELF,自移动,即一个可执行文件在执行时移动自己

IN_UNMOUNT,宿主文件系统被umount

IN_CLOSE,文件被关闭,等同于(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)

IN_MOVE,文件被移动,等同于(IN_MOVED_FROM | IN_MOVED_TO)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.kler.cn/a/5983.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

GNU-Radio简介

GNU Radio的历史 GNU Radio是一个自由、开源的软件无线电平台,它的由来可以追溯到美国电气与计算机工程师协会(IEEE)的一项研究项目。该项目最初是由Doug W. 约翰逊(Doug W. Johnson)和Matt Ettus于1997年发起的&…

日结(3.26

A - Super Ryuma AtCoder - abc184_c 思路:根据题设,我们能从初始点跳往横纵坐标绝对值和小于3的点或横纵坐标移动坐标绝对值相同的点,所以按规则来说到达任意点最多步数为3步,第一步可到位置如图,第二步可到绝对值和…

基于chatGPT插件开发

人工智能(Artificial Intelligence,AI)是指通过计算机模拟人类智能的一种技术。AI技术的发展涉及到多个学科领域,包括计算机科学、数学、统计学、心理学、哲学等。目前AI技术最火爆的莫过于chatGPT4.0,它不但在智能方面…

C的实用笔记36——几种常用的字符串处理API(一)

0、const关键字 1、知识点:const是与存储相关的关键字,用作常量声明,修饰普通变量和指针变量,表示只读。const修饰普通变量:,修饰后变量从可修改的左值变成不可修改的左值 const修饰指针变量:分…

当营养遇上肠道菌群:探究其对儿童健康的影响

谷禾健康 越来越多的证据表明,肠道菌群定植紊乱和微生物多样性减少与全球非传染性疾病 (NCD) 的增加有关。影响儿童和青少年的非传染性疾病包括肥胖及其相关合并症、自身免疫性疾病、过敏性疾病和哮喘。饮食变化也与非传染性疾病的发病机制有关,并且由于…

STM32基于STM32CubeMX硬件I2C驱动MPU6050读取数据

STM32基于STM32CubeMX硬件I2C驱动MPU6050读取数据✨申明:本文章仅发表在CSDN网站,任何其他网站,未注明来源,见此内容均为盗链爬取,请多多尊重和支持原创!🍁对于文中所提供的相关资源链接将作不定期更换。&a…

vue尚品汇商城项目-day01【6.Footer组件的显示与隐藏】

文章目录6.Footer组件的显示与隐藏6.1我们可以根据组件身上的$route获取当前路由的信息,通过路由路径判断Footer显示与隐藏6.2配置路由的时候,可以给路由添加元信息[meta],路由需要配置对象,它的key不能乱接、瞎写、胡写&#xff…

C++基础学习笔记(六)——提高编程PART1

参考链接:https://www.bilibili.com/video/BV1et411b73Zp167&vd_sourceb4d9cee68649c8adcb1e266f7147cd5c 一、模板 1.1 模板的概念 模板就是建立通用的模具,大大提高复用性 例如生活中的模板 一寸照片模板: PPT模板: 模…

对于Redis的学习-Redis的数据结构

1,String 简介 ,字符串类型,可以包含任何数据,最大可以是512MB,内部的实现结构和ArrayList类似,采用内分配冗余的形式,来减少内存的频繁分配(降低CPU压力) struct SDS …

信息系统项目管理师第四版知识摘编:第17章 项目干系人管理​

第17章 项目干系人管理 项目干系人管理包括识别能够影响项目或会受项目影响的人员、团体或组织,分析干系人对项目的期望和影响,制定管理策略有效调动干系人参与项目决策和执行。 17.1管理基础 17.1.1管理的重要性 每个项目都有干系人,他们…

PCB模块化设计14——MIPI模块PCB布局布线设计规范

目录PCB模块化设计14——MIPI模块PCB布局布线设计规范1、简介2、MIPI联盟的MIPI DSI规范3、MIPI信号布局布线要求--checklistPCB模块化设计14——MIPI模块PCB布局布线设计规范 1、简介 MIPI(移动行业处理器接口)是Mobile Industry Processor Interface…

ab性能测试工具的安装与使用

一、ab介绍 ab,是Apache Benchmark的缩写,是一个种用于测试Apache的超文本传输协议(http)服务器的工具。 二、ab原理 ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问,它的测试目…

留言板系统的设计与实现_kaic

目 录 内容摘要 Abstract Key Words 1.课程题目介绍 1.1选题背景及意义 1.2需求分析 1.3达到的目标 2.系统总体模块 2.1 系统总体模块流程图 2.2 配置服务器 3.各功能模块界面设计与功能实现 3.1首页界面 3.2 文章日记管理…

一文解析RISC-V SiFive U54内核——中断和异常

中断 U54内核支持M模式和S模式中断。默认情况下,所有中断都在M模式下处理 。对于支持S模式的 hart,可以有选择地将中断委托给S模式。 U54中断架构如下: U54内核还支持两种类型的 RISC-V 中断:本地 和全局 。 本地中断 &#xf…

C#,初学琼林(06)——幂的常规算法与递归算法、模幂(幂模)的快速算法及其C#源程序

1、幂 (Pow)的计算 幂 (Pow)是数值计算的基本方法之一。 幂运算是一种关于幂的数学运算。同底数幂相乘,底数不变,指数相加。同底数幂相除,底数不变,指数相减。幂的乘方&#xff0c…

一位程序员将一款开源工具变成了价值75亿美元的帝国

他的成功,激励着年轻的程序员为什么翻译这些程序员大佬的成功故事?除了写代码,作为开发者,我们也需要时不时地仰望星空。我们每个人都怀有着远大的理想,希望用代码改变自己的生活、行业,甚至是这个世界。编…

window安装Redis服务

下载地址:Releases tporadowski/redis GitHub。 Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包,解压后,将文件夹重新命名为 redis。 命令创建Redis服务 上述方式虽然…

码住,虹科工业树莓派应用小tips

在应用虹科工业树莓派进行项目开发的过程中,我们会应用到各种功能,部分功能看似不起眼,但是在实际应用开发过程中却非常重要。接下来虹科分享几个工业树莓派在应用过程中经常会遇到的几个问题,并分享解决方案,帮助大家…

Vins 前端中高效的去畸变的方式解析

Vins 前端中高效的去畸变的方式解析 1.0 畸变是如何产生的 \quad我们先来想想3D点是如何投影到图像平面的:世界坐标点经过一个外参矩阵得到相机坐标系下的位置,由于我们经常用到的是归一化平面坐标,所以这里还要各坐标除以 ZZZ,之…

2023年Visual Studio Code安装详细教程(含插件推荐)

一.官网下载安装 1. 官网下载地址: Download Visual Studio Code - Mac, Linux, Windows 根据自己的系统进行安装,下载完之后就是这个安装包 2. 详细安装步骤 1.1双击安装包,进行安装出现如下图所示。同意点击 下一步 如果出现以下问题不…
最新文章