ʲôÊÇinotify£º InotifyÊÇÒ»¸öʼþÇý¶¯µÄ֪ͨ»úÖÆ£¬Inotify Ìṩһ¸ö¼òµ¥µÄAPI£¬Ê¹ÓÃ×îСµÄÎļþÃèÊö·û£¬²¢ÇÒÔÊÐíϸÁ£¶È¼à¿Ø¡£Óë inotify µÄͨÐÅÊÇͨ¹ýϵͳµ÷ÓÃʵÏÖ¡£¿ÉÓõĺ¯ÊýÈçÏÂËùʾ£º inotify_init ÊÇÓÃÓÚ´´½¨Ò»¸öinotifyʵÀýµÄϵͳµ÷Ó㬲¢·µ»ØÒ»¸öÖ¸Ïò¸ÃʵÀýµÄÎļþÃèÊö·û¡£ inotify_init1 Óëinotify_initÏàËÆ£¬²¢´øÓи½¼Ó±êÖ¾¡£Èç¹ûÕâЩ¸½¼Ó±ê־ûÓÐÖ¸¶¨£¬½«²ÉÓÃÓëinotify_initÏàͬµÄÖµ¡£ inotify_add_watch Ôö¼Ó¶ÔÎļþ»òÕßĿ¼µÄ¼à¿Ø£¬²¢Ö¸¶¨ÐèÒª¼à¿ØÄÄЩʼþ¡£±êÖ¾ÓÃÓÚ¿ØÖÆÊÇ·ñ½«Ê¼þÌí¼Óµ½ÒÑÓÐµÄ¼à¿ØÖУ¬ÊÇ·ñÖ»Óз¾¶´ú±íÒ»¸öĿ¼²Å½øÐÐ¼à¿Ø£¬ÊÇ·ñҪ׷×Ù·ûºÅÁ´½Ó£¬ÊÇ·ñ½øÐÐÒ»´ÎÐÔ¼à¿Ø£¬µ±Ê×´Îʼþ³öÏÖºó¾ÍÍ£Ö¹¼à¿Ø¡£ inotify_rm_watch ´Ó¼à¿ØÁбíÖÐÒÆ³ö¼à¿ØÏîÄ¿¡£ read ¶ÁÈ¡°üº¬Ò»¸ö»òÕß¶à¸öʼþÐÅÏ¢µÄ»º´æ¡£ close ¹Ø±ÕÎļþÃèÊö·û£¬²¢ÇÒÒÆ³ýËùÓÐÔÚ¸ÃÃèÊö·ûÉϵÄËùÓÐ¼à¿Ø¡£µ±¹ØÓÚijʵÀýµÄËùÓÐÎļþÃèÊö·û¶¼¹Ø±Õʱ£¬×ÊÔ´ºÍϲã¶ÔÏó¶¼½«ÊÍ·Å£¬ÒÔ¹©ÄÚºËÔÙ´ÎʹÓᣠÒò´Ë£¬µäÐÍµÄ¼à¿Ø³ÌÐòÐèÒª½øÐÐÈçϲÙ×÷£º ʹÓà 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£¬ÎļþÊôÐÔ±»Ð޸ģ¬Èçchmod¡¢chown¡¢touchµÈ IN_CLOSE_WRITE£¬¿ÉдÎļþ±»close IN_CLOSE_NOWRITE£¬²»¿ÉдÎļþ±»close IN_OPEN£¬Îļþ±»open IN_MOVED_FROM£¬Îļþ±»ÒÆ×ß,Èçmv IN_MOVED_TO£¬Îļþ±»ÒÆÀ´£¬Èçmv¡¢cp 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')