inotifywait實時監控文件目錄


一、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 #以指定事件降序排列。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM