仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1399|回复: 7
打印 上一主题 下一主题

[CentOS(社区)] 带来一篇Pyinotify文件体系监控

[复制链接]
若天明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-14 20:23:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
如果您觉得本篇CentOSLinux教程讲得好,请记得点击右边漂浮的分享程序,把好文章分享给你的小伙伴们!Pyinotify是一个Python模块,用来监测文件体系的变更。Pyinotify依附于Linux内核的功效—inotify(内核2.6.13兼并)。inotify的是一个事务驱动的关照器,其关照接口经由过程三个体系挪用从内核空间到用户空间。pyinotify分离这些体系挪用,并供应一个***的笼统和一个通用的体例来处置这些功效。


  • pyinotify说百了就是经由过程挪用体系的inotify来完成关照的
  • inotify既能够监督文件,也能够监督目次
  • Inotify利用体系挪用而非SIGIO来关照文件体系事务。
Inotify能够监督的文件体系事务包含:
EventNameIsanEventDescriptionIN_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来完成对文件体系的监控十分复杂

  1. #!/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:12 | 只看该作者

带来一篇Pyinotify文件体系监控

选择一些适于初学者的Linux社区。
飘飘悠悠 该用户已被删除
板凳
发表于 2015-1-25 20:40:54 | 只看该作者
首先Linux是开源的,这也是最主要的原因,想学windows,Unix,对不起我们没源代码。也正是因为这样,Linux才能够像滚雪球一样越滚越大,发展到现在这种规模。
若天明 该用户已被删除
地板
 楼主| 发表于 2015-2-4 12:04:28 | 只看该作者
Linux简单,占内存少,特别是对于程序开发人员来说很方便,如果说windows的成功在于其方便用户的窗口管理界面。
蒙在股里 该用户已被删除
5#
发表于 2015-2-9 22:34:38 | 只看该作者
学习Linux系统在服务中的配置方法及使用方法。Linux在服务器中应用相当广,应对常用的apache,samba,ftp等服务器基本配置清楚了解。[重点,应巩固学习]
飘灵儿 该用户已被删除
6#
发表于 2015-2-28 03:54:09 | 只看该作者
熟悉并掌握安装Linux,安装是学习的前提。目前较常见的安装方法有二种:
海妖 该用户已被删除
7#
发表于 2015-3-9 22:10:57 | 只看该作者
Linux高手更具有鼓励新手的文化精神。如何在Linux社区获得帮助,需要说明的是你要有周全的思考,准备好你的问题,不要草率的发问。
8#
发表于 2015-3-17 04:11:09 | 只看该作者
Linux简单,占内存少,特别是对于程序开发人员来说很方便,如果说windows的成功在于其方便用户的窗口管理界面。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-14 14:37

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表