pyinotify简单实用(用于文件系统监控)
Pyinotify是一个Python模块,用来监测文件系统的变化。 Pyinotify依赖于Linux内核的功能—inotify(内核2.6.13合并)。 inotify的是一个事件驱动的通知器,其通知接口通过三个系统调用从内核空间到用户空间。pyinotify结合这些系统调用,并提供一个顶级的抽象和一个通用的方式来处理这些功能。pyinotify其实就是通过调用系统的inotify来实现
·
Pyinotify是一个Python模块,用来监测文件系统的变化。 Pyinotify依赖于Linux内核的功能—inotify(内核2.6.13合并)。 inotify的是一个事件驱动的通知器,其通知接口通过三个系统调用从内核空间到用户空间。pyinotify结合这些系统调用,并提供一个顶级的抽象和一个通用的方式来处理这些功能。
pyinotify其实就是通过调用系统的inotify来实现通知的。
1. 安装
|
1
2
3
|
git clone https: //github .com /seb-m/pyinotify .git
cd pyinotify/
python setup.py install
|
2. 简单使用
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
import os
from pyinotify import WatchManager, Notifier, ProcessEvent, IN_DELETE, IN_CREATE, IN_MODIFY
class EventHandler(ProcessEvent):
def process_IN_CREATE( self , event):
print "Create file:%s." % os.path.join(event.path,event.name)
os.system( 'cp -rf %s /tmp/bak/' % (os.path.join(event.path,event.name)))
def process_IN_DELETE( self , event):
print "Delete file:%s." % os.path.join(event.path,event.name)
def process_IN_MODIFY( self , event):
print "Modify file:%s." % os.path.join(event.path,event.name)
def FsMonitor(path = '.' ):
wm = WatchManager() #创建监视组
mask = IN_DELETE | IN_CREATE | IN_MODIFY
notifier = Notifier(wm, EventHandler()) #创建事件处理器,参数为监视组和对应的事件处理函数
wm.add_watch(path, mask, auto_add= True, rec=True) #将具体路径的监控加入监视组
print "now starting monitor %s." % path
while True :
try :
notifier.process_events() #对事件队列中的事件逐个调用事件处理函数
if notifier.check_events(): #检查是否有新事件到来
print "check event true."
notifier.read_events() #将新事件读入事件队列
except KeyboardInterrupt:
print "keyboard Interrupt."
notifier.stop() #停止对监视组事件的处理
break
if __name__ = = "__main__" :
FsMonitor( "/root/work/" )
|
更多推荐



所有评论(0)