用pyinotify监控文件系统示例,pyinotify监控示例,Pyinotify是一个


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

安装
git clone https://github.com/seb-m/pyinotify.gitcd pyinotify/python setup.py install
简单使用
import osfrom pyinotify import WatchManager, Notifier, ProcessEvent, IN_DELETE, IN_CREATE, IN_MODIFYclass 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()            breakif __name__ == "__main__":    FsMonitor("/root/work/")

评论关闭