Python的監控功能示例

dead_lee發表於2021-09-11

Pyinotify是一個Python模組,用來監測檔案系統的變化。 Pyinotify依賴於Linux核心的功能—inotify(核心2.6.13合併)。 inotify的是一個事件驅動的通知器,其通知介面透過三個系統呼叫從核心空間到使用者空間。pyinotify結合這些系統呼叫,並提供一個頂級的抽象和一個通用的方式來處理這些功能。

Python的監控功能示例

pyinotify 就是透過 呼叫系統的inotify來實現通知的

Inotify 既可以監視檔案,也可以監視目錄

Inotify 使用系統呼叫而非 SIGIO 來通知檔案系統事件。

Inotify 可以監視的檔案系統事件包括:

360截圖17001018111136100.png

案例:Python監控目錄變化

#!/usr/bin/env python
#coding=utf-8
 
import os
from pyinotify import WatchManager, Notifier, ProcessEvent, IN_DELETE, IN_CREATE,IN_MODIFY
wm = WatchManager() 
mask = IN_DELETE | IN_CREATE |IN_MODIFY  # watched events
 
class PFilePath(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)
 
if __name__ == "__main__":
 
  notifier = Notifier(wm, PFilePath())
  wdd = wm.add_watch('.', mask, rec=True)
 
  while True:
    try :
      notifier.process_events()
      if notifier.check_events():
        notifier.read_events()
    except KeyboardInterrupt:
      notifier.stop()
      break

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4686/viewspace-2837463/,如需轉載,請註明出處,否則將追究法律責任。

相關文章