一、inotify簡介
inotify 是一種強大的、細粒度的、異步文件系統監控機制,它滿足各種各樣的文件監控需要,可以監控文件系統的訪問屬性、讀寫屬性、權限屬性、創建刪除、移動等操作,也可以監控文件發生的一切變化。
inotify-tools 是一個C庫和一組命令行的工作提供Linux下inotify的簡單接口。
inotify-tools中包含inotifywait和inotifywatch兩個命令
inotifywait 命令可以用來收集有關文件訪問信息,Linux發行版一般沒有包含這個命令。需要安裝inotify-tools,這個命令還需要將inotify支持編譯入Linux內核,好在大多數Linux都在內核中啟用inotify。
inotifywatch命令用於收集關於被監控的文件系統的統計數據,包括每個inotify事件發生多少次。
二、inotifywait 使用
-m #持續監聽
-r #使用遞歸形式監控目錄
-q #減少冗余信息,只打印出需要的信息
-e #指定要監控的事件,多個事件使用逗號隔開
access #訪問,讀取文件
modify #修改,文件內容被修改
attrib #屬性,文件元數據被修改
move #移動,對文件進行移動操作 move_to move_from
create #創建,生成新文件
open #打開,對文件進行打開操作
close #關閉,對文件進行關閉操作 close_write close_nowrite
delete #刪除,文件被刪除 delete_self
unmount #卸載文件或目錄的文件系統
--timefmt #時間格式 y 年 m月 d日 H小時 M分鍾
--format #監控事件發生后的信息輸出格式
%w #表示發生事件的目錄
%f #表示發生事件的文件
%e #表示發生的事件
%Xe #事件以“X”分隔
%T #使用由 --timefmt定義的時間格式
--exclude #排除文件或目錄時,大小寫敏感
# --exclude="(.*.swp)|(.*~$)|(.*.swx)"使用正則匹配排除文件
--excludei #同 --exclude 但是不區分大小寫
**問題: **
/usr/local/bin/inotifywait: error while loading shared libraries:libinotifytools.so.0: cannot open shared object file: No such file or directory
解決方法:ln -s /usr/local/lib/libinotifytools.so.0/usr/lib64/libinotifytools.so.0
三、inotifywatch 使用
--fromfile #從文件讀取需要監視的文件或排除的文件,一個文件一行,排除的文件以@開頭。
-z, --zero #輸出表格的行和列,即使元素為空
--exclude #正則匹配需要排除的文件,大小寫敏感。
--excludei #正則匹配需要排除的文件,忽略大小寫。
-r, --recursive #監視一個目錄下的所有子目錄。
-t , --timeout #設置超時時間
-e , --event #只監聽指定的事件。與inotifywait事件一致
-a , --ascending #以指定事件升序排列。
-d , --descending #以指定事件降序排列。