即時監看系統檔案變動

linux kernel在 2.6.13 以後的版本可以使用 Inotify

首先先安裝inotify-tools,ubuntu可以直接用apt-get 安裝
apt-get install inotify-tools

假設要監看的路徑是 /home/abc/,指令為:
inotifywait -mrq /home/abc

-m: monitor 如果不使用的話,就僅僅會顯示一筆變動記錄後就結束!
-r: recursive 包括底下所有子路徑
-q: quiet 簡化輸出的訊息

如果有需要兩個目錄要完全一模一樣,可以利用rsync:
inotifywait -mrq -e create,move,delete,modify /home/abc | while read DIR ACT FILE ; do rsync -avq --delete /home/abc /home/def
這樣當/home/abc有任何變動時, /home/def會即時跟著變動。

inotifywait -mrq -e create,move,delete,modify /home/abc 這行指令用-e,只顯示 create,move,delete,modify 四種行為,當有事件發生時,輸出的訊息有三個欄位,如下:
/home/abc/ CREATE aaa
分別是 "路徑" "事件狀態" "檔案名稱",所以也可以讀入特定的欄位來進行處理。

另外,Inotify預設只能夠監看8K(8192)以下的檔案數量,如果檔案數量超出的話,修改 /proc/sys/fs/inotify/max_user_watches 的值就可以增加了!!

本篇發表於 系統相關。將永久鏈結加入書籤。

發表迴響

你的電子郵件位址並不會被公開。

*

:~~: :stealthy: :sigh: :shake: :pop: :photo: :orz: :oops: :muyu: :loser: :laugh: :hot: :fight: :eat: :cry: :cool: :cookacman: :clap: :addoil: :PP :O~: :O: :?: :-x