Linux inotify简介

本文介绍了Linux的inotify机制,一种文件系统监控工具,详细阐述了inotify的使用方法,包括创建inotify实例、使用inotifywait和inotifywatch命令行工具。还讨论了inotify相关参数的重要性和调整方法,以及与fsnotify的区别。提供了适用于Linux内核2.6.13及更高版本的监控解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Linux inotify

1. 什么是 inotify

inotify是一种强大的、细粒度的、异步的文件系统监控机制,linux内核从2.6.13起,加入了Inotify支持,通过Inotify可以监控文件系统中添加、删除、修改、移动等各种事件,利用这个内核接口,第三方软件就可以监控文件系统下文件的各种变化情况。

inotify既可以监控文件,也可以监控目录。当监控目录时,它可以同时监控目录及目录中的各子目录及文件的。

开源社区提出用户态需要内核提供一些机制,以便用户态能够及时地得知内核或底层硬件设备发生了什么,从而能够更好地管理设备,给用户提供更好的服务,如 hotplug、udev 和 inotify 就是这种需求催生的。

  • Hotplug 是一种内核向用户态应用通报关于热插拔设备一些事件发生的机制,桌面系统能够利用它对设备进行有效的管理,
  • udev 动态地维护 /dev 下的设备文件,
  • inotify 是一种文件系统的变化通知机制,如文件增加、删除等事件可以立刻让用户态得知。

inotify 可以监视的文件系统事件包括:

事件 描述
access 访问,读取文件。例如: cat filename.txt
modify 修改,文件或目录内容被修改
attrib 修改,文件元数据发生改变
move 移动,对文件进行移动操作
create 创建,生成新文件
open 打开,对文件进行打开操作
close 关闭,对文件进行关闭操作
delete 删除,文件被删除
unmount 文件系统被卸载

文件事件用一个 inotify_event 结构表示:

struct inotify_event {
   
    int wd; /* watch 文件描述符 */
    uint32_t mask; /* Mask of events */
    uint32_t cookie;
    uint32_t len /* size of name filed */
    char name[]; /* optional null-terminated name */
};

在这里插入图片描述

由上图得知:基于inotify的inotify事件中并没有进程信息!!!

Linux下支持inotify的内核最小为2.6.13,CentOS 5.X 内核为2.6.18,默认已经支持inotify。

2. i

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西京刀客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值