linux 监控某个文件

可监控的事件

有几种事件能够被监控。一些事件,比如 IN_DELETE_SELF 只适用于正在被监控的项目,而另一些,比如 IN_ATTRIB 或者 IN_OPEN 则只适用于监控过的项目,或者如果该项目是目录,则可以应用到其所包含的目录或文件。

IN_ACCESS

被监控项目或者被监控目录中的条目被访问过。例如,一个打开的文件被读取。

IN_MODIFY

被监控项目或者被监控目录中的条目被修改过。例如,一个打开的文件被修改。

IN_ATTRIB

被监控项目或者被监控目录中条目的元数据被修改过。例如,时间戳或者许可被修改。

IN_CLOSE_WRITE

一个打开的,等待写入的文件或目录被关闭。

IN_CLOSE_NOWRITE

一个以只读方式打开的文件或目录被关闭。

IN_CLOSE

一个掩码,可以很便捷地对前面提到的两个关闭事件(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)进行逻辑操作。

IN_OPEN

文件或目录被打开。

IN_MOVED_FROM

被监控项目或者被监控目录中的条目被移出监控区域。该事件还包含一个 cookie 来实现 IN_MOVED_FROM 与 IN_MOVED_TO 的关联。

IN_MOVED_TO

文件或目录被移入监控区域。该事件包含一个针对 IN_MOVED_FROM 的 cookie。如果文件或目录只是被重命名,将能看到这两个事件,如果它只是被移入或移出非监控区域,将只能看到一个事件。如果移动或重命名一个被监控项目,监控将继续进行。参见下面的 IN_MOVE-SELF。

IN_MOVE

可以很便捷地对前面提到的两个移动事件(IN_MOVED_FROM | IN_MOVED_TO)进行逻辑操作的掩码。

IN_CREATE

在被监控目录中创建了子目录或文件。

IN_DELETE

被监控目录中有子目录或文件被删除。

IN_DELETE_SELF

被监控项目本身被删除。监控终止,并且将收到一个 IN_IGNORED 事件。

IN_MOVE_SELF

监控项目本身被移动。

除了事件标志以外,还可以在 inotify 头文件(/usr/include/sys/inotify.h)中找到其他几个标志。例如,如果只想监控第一个事件,可以在增加监控时设置 IN_ONESHOT 标志。

 

 

#!/usr/bin/python

  

import logging

from inotify import adapters

  

_DEFAULT_LOG_FORMAT = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'

  

_LOGGER = logging.getLogger(__name__)

  

def _configure_logging():

    _LOGGER.setLevel(logging.DEBUG)

    ch = logging.FileHandler('./record', 'a')

    formatter = logging.Formatter(_DEFAULT_LOG_FORMAT)

    ch.setFormatter(formatter)

    _LOGGER.addHandler(ch)

  

def _main():

    i = adapters.Inotify()

    i.add_watch('/var/lib/logrotate.status')

  

    for event in i.event_gen():

        if event:

            if event[1][0] == "IN_IGNORED":

                print "writ"

  

if __name__ == '__main__':

    _configure_logging()

    _main()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值