閱讀287 返回首頁    go 技術社區[雲棲]


pyinotify:在 Linux 中實時監控文件係統更改

Pyinotify 是一個簡單而有用的 Python 模塊,它可用於在 Linux 中實時監控文件係統更改

作為一名係統管理員,你可以用它來監視你感興趣的目錄的更改,如 Web 目錄或程序數據存儲目錄及其他目錄。

建議閱讀: fswatch - 監控 Linux 中的文件和目錄更改或修改

它依賴於 inotify(在內核 2.6.13 中納入的 Linux 內核功能),它是一個事件驅動的通知程序,其通知通過三個係統調用從內核空間導出到用戶空間。

pyinotiy 的目的是綁定這三個係統調用,並在其上提供了一個通用和抽象的方法來操作這些功能。

在本文中,我們將向你展示如何在 Linux 中安裝並使用 pyinotify 來實時監控文件係統更改或修改。

依賴

要使用 pyinotify,你的係統必須運行:

  1. Linux kernel 2.6.13 或更高
  2. Python 2.4 或更高

如何在 Linux 中安裝 Pyinotify

首先在係統中檢查內核和 Python 的版本:


  1. # uname -r
  2. # python -V

一旦依賴滿足,我們會使用 pip 安裝 pynotify。在大多數 Linux 發行版中,如果你使用的是從 python.org 下載的 Python 2 (>= 2.7.9) 或者 Python 3( >=3.4) 的二進製,那麼 pip 就已經安裝了,否則,就按如下安裝:


  1. # yum install python-pip [On CentOS based Distros]
  2. # apt-get install python-pip [On Debian based Distros]
  3. # dnf install python-pip [On Fedora 22+]

現在安裝 pyinotify


  1. # pip install pyinotify

它會從默認倉庫安裝可用的版本,如果你想要最新的穩定版,可以按如下從 git 倉庫 clone 下來:


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

如何在 Linux 中使用 pyinotify

在下麵的例子中,我以 root 用戶(通過 ssh 登錄)監視了用戶 tecmint 的家目錄(/home/tecmint)下的改變,如截圖所示:


  1. # python -m pyinotify -v /home/tecmint

監視目錄更改

監視目錄更改

接下來,我會觀察到任何 web 目錄 (/var/www/html/tecmint.com) 的更改:


  1. # python -m pyinotify -v /var/www/html/tecmint.com

要退出程序,隻要按下 Ctrl+C

注意:當你在運行 pyinotify 時如果沒有指定要監視的目錄,/tmp 將作為默認目錄。

原文發布時間為:2017-04-13

本文來自雲棲社區合作夥伴“Linux中國”

最後更新:2017-05-22 15:02:13

  上一篇:go  Apache Storm 官方文檔 —— FAQ
  下一篇:go  如何在 Linux 中添加一塊大於 2TB 的新磁盤