python的监控功能示例

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

python的监控功能示例" alt="python的监控功能示例" src="//www.dapan.cc/wp-content/uploads/2022/11/1668480389-a7763eb16eb74e7.jpg">

pyinotify 就是通过 调用系统的inotify来实现通知的

Inotify 既可以监视文件,也可以监视目录

Inotify 使用系统调用而非 SIGIO 来通知文件系统事件。

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

python的监控功能示例" alt="python的监控功能示例" src="//www.dapan.cc/wp-content/uploads/2022/11/1668480389-f623f027d63f47e.jpg">

#!/usr/bin/envpython
#coding=utf-8

importos
frompyinotifyimportWatchManager,Notifier,ProcessEvent,IN_DELETE,IN_CREATE,IN_MODIFY
wm=WatchManager()
mask=IN_DELETE|IN_CREATE|IN_MODIFY#watchedevents

classPFilePath(ProcessEvent):
defprocess_IN_CREATE(self,event):
print"Createfile:%s"%os.path.join(event.path,event.name)

defprocess_IN_DELETE(self,event):
print"Deletefile:%s"%os.path.join(event.path,event.name)

defprocess_IN_MODIFY(self,event):
print"Modifyfile:%s"%os.path.join(event.path,event.name)

if__name__=="__main__":

notifier=Notifier(wm,PFilePath())
wdd=wm.add_watch('.',mask,rec=True)

whileTrue:
try:
notifier.process_events()
ifnotifier.check_events():
notifier.read_events()
exceptKeyboardInterrupt:
notifier.stop()
break