python文件系统监控_Python Inotify 监视LINUX文件系统事件

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

--IN_ACCESS,即文件被访问

--IN_MODIFY,文件被write

--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)

安装 pyinotify:

# pip install pyinotify

它会从默认仓库安装可用的版本,如果你想要最新的稳定版,可以按如下从 git 仓库 clone 下来:

# git clone https://github.com/seb-m/pyinotify.git

# cd pyinotify/

# ls

# python setup.py install

如何在 Linux 中使用 pyinotify

#coding:utf8

#author:lcamry

import os

import pyinotify

from functions import *

WATCH_PATH = '' #监控目录

if not WATCH_PATH:

wlog('Error',"The WATCH_PATH setting MUST be set.")

sys.exit()

else:

if os.path.exists(WATCH_PATH):

wlog('Watch status','Found watch path: path=%s.' % (WATCH_PATH))

else:

wlog('Error','The watch path NOT exists, watching stop now: path=%s.' % (WATCH_PATH))

sys.exit()

class OnIOHandler(pyinotify.ProcessEvent):

def process_IN_CREATE(self, event):

wlog('Action',"create file: %s " % os.path.join(event.path,event.name))

def process_IN_DELETE(self, event):

wlog('Action',"delete file: %s " % os.path.join(event.path,event.name))

def process_IN_MODIFY(self, event):

wlog('Action',"modify file: %s " % os.path.join(event.path,event.name))

def auto_compile(path = '.'):

wm = pyinotify.WatchManager()

mask = pyinotify.IN_CREATE | pyinotify.IN_DELETE | pyinotify.IN_MODIFY

notifier = pyinotify.ThreadedNotifier(wm, OnIOHandler())

notifier.start()

wm.add_watch(path, mask,rec = True,auto_add = True)

wlog('Start Watch','Start monitoring %s' % path)

while True:

try:

notifier.process_events()

if notifier.check_events():

notifier.read_events()

except KeyboardInterrupt:

notifier.stop()

break

if __name__ == "__main__":

auto_compile(WATCH_PATH)

更多例子见:https://www.cnblogs.com/hollyspirit/p/3182828.html

在下面的例子中,我以 root 用户(通过 ssh 登录)监视了用户 tecmint 的家目录(/home/tecmint)下的改变,如截图所示:

# python -m pyinotify -v /home/tecmint

接下来,我会观察到任何 web 目录 (/var/www/html/http://tecmint.com) 的更改:

# python -m pyinotify -v /var/www/html/tecmint.com

要退出程序,只要按下 Ctrl+C。

注意:当你在运行 pyinotify 时如果没有指定要监视的目录,/tmp 将作为默认目录。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值