ʲôinotify

  Inotifyһ¼֪ͨƣInotify ṩһ򵥵APIʹСļϸȼء inotify ͨͨϵͳʵ֡õĺʾ
  inotify_init  ڴһinotifyʵϵͳãһָʵļ
  inotify_init1  inotify_initƣиӱ־Щӱ־ûָinotify_initֵͬ
  inotify_add_watch ӶļĿ¼ļأָҪЩ¼־ڿǷ¼ӵеļУǷֻ·һĿ¼ŽмأǷҪ׷ٷӣǷһԼأ״¼ֺֹͣء
  inotify_rm_watch ӼбƳĿ
  read ȡһ߶¼ϢĻ档
  close رļƳڸϵмءĳʵļرʱԴ²󶼽ͷţԹںٴʹá
ˣ͵ļسҪ²

  ʹ inotify_init һļ
  һ߶
  ȴ¼
  ¼Ȼ󷵻زȴ¼
  زٻʱ߽ӵĳź֮󣬹رļգȻ˳
pyinotifyİװ

?
1
2
3
git clone https://github.com/seb-m/pyinotify.git
cd pyinotify/
python setup.py install

Inotify Լӵļϵͳ¼

IN_ACCESSļ
IN_MODIFYļwrite
IN_ATTRIBļԱ޸ģchmodchowntouch
IN_CLOSE_WRITEдļclose
IN_CLOSE_NOWRITEдļclose
IN_OPENļopen
IN_MOVED_FROMļ,mv
IN_MOVED_TOļmvcp
IN_CREATEļ
IN_DELETEļɾrm
IN_DELETE_SELFɾһִļִʱɾԼ
IN_MOVE_SELFƶһִļִʱƶԼ
IN_UNMOUNTļϵͳumount
IN_CLOSEļرգͬ(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)
IN_MOVEļƶͬ(IN_MOVED_FROM | IN_MOVED_TO)


pyinotifyʹ

#!/usr/bin/env python
# encoding:utf-8
  
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)
  
 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():
       notifier.read_events()
   except KeyboardInterrupt:
     notifier.stop()
     break
  
if __name__ == "__main__":
 FSMonitor('/home/firefoxbug')