仓酷云
标题:
带来一篇Pyinotify文件体系监控
[打印本页]
作者:
若天明
时间:
2015-1-14 20:23
标题:
带来一篇Pyinotify文件体系监控
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的小伙伴们!
Pyinotify是一个Python模块,用来监测文件体系的变更。Pyinotify依附于Linux内核的功效—inotify(内核2.6.13兼并)。inotify的是一个事务驱动的关照器,其关照接口经由过程三个体系挪用从内核空间到用户空间。pyinotify分离这些体系挪用,并供应一个***的笼统和一个通用的体例来处置这些功效。
pyinotify说百了就是经由过程挪用体系的inotify来完成关照的
inotify既能够监督文件,也能够监督目次
Inotify利用体系挪用而非SIGIO来关照文件体系事务。
Inotify能够监督的文件体系事务包含:
EventName
IsanEvent
Description
IN_ACCESSYesfilewasaccessed.IN_ATTRIBYesmetadatachanged.IN_CLOSE_NOWRITEYesunwrittablefilewasclosed.IN_CLOSE_WRITEYeswrittablefilewasclosed.IN_CREATEYesfile/dirwascreatedinwatcheddirectory.IN_DELETEYesfile/dirwasdeletedinwatcheddirectory.IN_DELETE_SELFYes自删除,即一个可实行文件在实行时删除本人IN_DONT_FOLLOWNodontfollowasymlink(lk2.6.15).IN_IGNOREDYesraisedonwatcheditemremoving.Probablyuselessforyou,preferinsteadIN_DELETE*.IN_ISDIRNoeventoccurredagainstdirectory.Itisalwayspiggybackedtoanevent.TheEventstructureautomaticallyprovidethisinformation(via.is_dir)IN_MASK_ADDNotoupdateamaskwithoutoverwritingthepreviousvalue(lk2.6.14).Usefulwhenupdatingawatch.IN_MODIFYYesfilewasmodified.IN_MOVE_SELFYes自挪动,即一个可实行文件在实行时挪动本人IN_MOVED_FROMYesfile/dirinawatcheddirwasmovedfromX.CantracethefullmoveofanitemwhenIN_MOVED_TOisavailabletoo,inthiscaseifthemoveditemisitselfwatched,itspathwillbeupdated(seeIN_MOVE_SELF).IN_MOVED_TOYesfile/dirwasmovedtoYinawatcheddir(seeIN_MOVE_FROM).IN_ONLYDIRNoonlywatchthepathifitisadirectory(lk2.6.15).Usablewhencalling.add_watch.IN_OPENYesfilewasopened.IN_Q_OVERFLOWYeseventqueuedoverflowed.Thiseventdoesntbelongstoanyparticularwatch.IN_UNMOUNTYes宿主文件体系被umount
经由过程pyinotify来完成对文件体系的监控十分复杂
登录/注册后可看大图
0149332642-0.gif
(263 Bytes, 下载次数: 12)
下载附件
保存到相册
带来一篇Pyinotify文件体系监控
2015-1-14 20:23 上传
#!/usr/bin/envpython#encoding:utf-8importosfrompyinotifyimportWatchManager,Notifier,ProcessEvent,IN_DELETE,IN_CREATE,IN_MODIFYclassEventHandler(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)defFSMonitor(path=.):wm=WatchManager()mask=IN_DELETE|IN_CREATE|IN_MODIFYnotifier=Notifier(wm,EventHandler())wm.add_watch(path,mask,rec=True)printnowstartingmonitor%s%(path)whileTrue:try:notifier.process_events()ifnotifier.check_events():notifier.read_events()exceptKeyboardInterrupt:notifier.stop()breakif__name__=="__main__":FSMonitor()
复制代码
[/code]
参考材料:
http://pyinotify.sourceforge.net/
http://trac.dbzteam.org/pyinotify/wiki
http://iyouf.info/pyinotify-monitor-filesystem.html
欢迎大家来到仓酷云论坛!
作者:
变相怪杰
时间:
2015-1-16 16:05
标题:
带来一篇Pyinotify文件体系监控
选择一些适于初学者的Linux社区。
作者:
飘飘悠悠
时间:
2015-1-25 20:40
首先Linux是开源的,这也是最主要的原因,想学windows,Unix,对不起我们没源代码。也正是因为这样,Linux才能够像滚雪球一样越滚越大,发展到现在这种规模。
作者:
若天明
时间:
2015-2-4 12:04
Linux简单,占内存少,特别是对于程序开发人员来说很方便,如果说windows的成功在于其方便用户的窗口管理界面。
作者:
蒙在股里
时间:
2015-2-9 22:34
学习Linux系统在服务中的配置方法及使用方法。Linux在服务器中应用相当广,应对常用的apache,samba,ftp等服务器基本配置清楚了解。[重点,应巩固学习]
作者:
飘灵儿
时间:
2015-2-28 03:54
熟悉并掌握安装Linux,安装是学习的前提。目前较常见的安装方法有二种:
作者:
海妖
时间:
2015-3-9 22:10
Linux高手更具有鼓励新手的文化精神。如何在Linux社区获得帮助,需要说明的是你要有周全的思考,准备好你的问题,不要草率的发问。
作者:
仓酷云
时间:
2015-3-17 04:11
Linux简单,占内存少,特别是对于程序开发人员来说很方便,如果说windows的成功在于其方便用户的窗口管理界面。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2