Linux使用inotify-tools監聽檔案或目錄
轉載:
Inotify一種強大的、細粒度的、非同步檔案系統監控機制,它滿足各種各樣的檔案監控需要,可以監控檔案系統的訪問屬性、讀寫屬性、許可權屬性、刪除建立、移動等操作,也就是可以監控檔案發生的一切變化。。
inotify-tools是一個C庫和一組命令列的工作提供Linux下inotify的簡單介面。inotify-tools安裝後會得到inotifywait和inotifywatch這兩條命令:
inotifywait命令可以用來收集有關檔案訪問資訊,Linux發行版一般沒有包括這個命令,需要安裝inotify-tools,這個命令還需要將inotify支援編譯入Linux核心,好在大多數Linux發行版都在核心中啟用了inotify。
inotifywatch命令用於收集關於被監視的檔案系統的統計資料,包括每個 inotify 事件發生多少次。
開始之前需要檢測系統核心是否支援inotify:
使用uname -r命令檢查Linux核心,如果低於2.6.13,就需要重新編譯核心加入inotify的支援。
使用ll /proc/sys/fs/inotify命令,是否有以下三條資訊輸出,如果沒有表示不支援。
ll /proc/sys/fs/inotifytotal 0
-rw-r–r– 1 root root 0 Jan 4 15:41 max_queued_events
-rw-r–r– 1 root root 0 Jan 4 15:41 max_user_instances
-rw-r–r– 1 root root 0 Jan 4 15:41 max_user_watches
inotify-tools專案地址:https://github.com/rvoicilas/inotify-tools
inotify-tools下載地址:http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
#CentOS release 5.8/64位:tar zxvf inotify-tools-3.14.tar.gzcd inotify-tools-3.14./configuremakemake install
其他Linux發行版安裝方法可以參見:https://github.com/rvoicilas/inotify-tools/wiki#wiki-getting
inotify定義了下列的介面引數,可以用來限制inotify消耗kernel memory的大小。由於這些引數都是記憶體引數,因此,可以根據應用需求,實時的調節其大小:
/proc/sys/fs/inotify/max_queued_evnets表示呼叫inotify_init時分配給inotify instance中可排隊的event的數目的最大值,超出這個值的事件被丟棄,但會觸發IN_Q_OVERFLOW事件。
/proc/sys/fs/inotify/max_user_instances表示每一個real user ID可建立的inotify instatnces的數量上限。
/proc/sys/fs/inotify/max_user_watches表示每個inotify instatnces可監控的最大目錄數量。如果監控的檔案數目巨大,需要根據情況,適當增加此值的大小。
根據以上在32位或者64位系統都可以執行:
echo 104857600 > /proc/sys/fs/inotify/max_user_watches
echo `echo 104857600 > /proc/sys/fs/inotify/max_user_watches` >> /etc/rc.local
如果遇到以下錯誤:
inotifywait: error while loading shared libraries: libinotifytools.so.0: cannot open shared object file: No such file or directory
解決方法:32位系統:ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib/libinotifytools.so.064位系統:ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib64/libinotifytools.so.0
#!/bin/bash#filename watchdir.shpath=$1/usr/local/bin/inotifywait -mrq –timefmt `%d/%m/%y/%H:%M` –format `%T %w %f` -e modify,delete,create,attrib $path執行輸出:./watchdir.sh /data/wsdata/tools/04/01/13/16:34 /data/wsdata/tools/ .j.jsp.swp
04/01/13/16:34 /data/wsdata/tools/ .j.jsp.swx
04/01/13/16:34 /data/wsdata/tools/ .j.jsp.swx
04/01/13/16:34 /data/wsdata/tools/ .j.jsp.swp
04/01/13/16:34 /data/wsdata/tools/ .j.jsp.swp
04/01/13/16:34 /data/wsdata/tools/ .j.jsp.swp
04/01/13/16:34 /data/wsdata/tools/ .j.jsp.swp
04/01/13/16:34 /data/wsdata/tools/ .j.jsp.swp
04/01/13/16:35 /data/wsdata/tools/ 4913
04/01/13/16:35 /data/wsdata/tools/ 4913
04/01/13/16:35 /data/wsdata/tools/ 4913
04/01/13/16:35 /data/wsdata/tools/ j.jsp
04/01/13/16:35 /data/wsdata/tools/ j.jsp
04/01/13/16:35 /data/wsdata/tools/ j.jsp
04/01/13/16:35 /data/wsdata/tools/ j.jsp~
04/01/13/16:35 /data/wsdata/tools/ .j.jsp.swp
-m是要持續監視變化。
-r使用遞迴形式監視目錄。
-q減少冗餘資訊,只列印出需要的資訊。
-e指定要監視的事件列表。
–timefmt是指定時間的輸出格式。
–format指定檔案變化的詳細資訊。
可監聽的事件
事件描述
access訪問,讀取檔案。
modify修改,檔案內容被修改。
attrib屬性,檔案後設資料被修改。
move移動,對檔案進行移動操作。
create建立,生成新檔案
open開啟,對檔案進行開啟操作。
close關閉,對檔案進行關閉操作。
delete刪除,檔案被刪除。
相關文章
- Linux 使用 inotify 監控檔案或目錄變化Linux
- Linux用inotify監聽檔案和目錄Linux
- linux 刪除檔案或目錄——rmLinux
- Linux排查磁碟大檔案或大目錄Linux
- Linux rm命令:刪除檔案或目錄Linux
- Linux 檔案與目錄Linux
- Linux檔案或目錄顏色一般情況Linux
- Linux檔案系統、目錄Linux
- Linux檔案和目錄管理Linux
- Linux檔案及目錄管理Linux
- Linux學習初期,怎麼給檔案或目錄命名呢?Linux
- ln 覆蓋普通檔案或目錄
- Linux系統下如何修改檔案或目錄的許可權?Linux
- linux檔案與目錄管理命令Linux
- Linux檔案與目錄管理(2)Linux
- 【Git】取消追蹤多個檔案或目錄Git
- nodejs獲取檔案資訊,判斷是檔案或目錄NodeJS
- linux目錄及檔案命令學習Linux
- adb命令管理Linux 檔案和目錄Linux
- Linux rm(刪除檔案/目錄) 命令Linux
- Linux常見命令-目錄檔案命令Linux
- Linux檔案系統目錄結構Linux
- Linux 基礎-檔案及目錄管理Linux
- 在 Linux 中如何歸檔檔案和目錄Linux
- Linux下如何查詢檔案或目錄?常用命令是什麼?Linux
- Linux中如何複製檔案或目錄?常用命令是什麼?Linux
- pythonpyinotify監控檔案與目錄的變化Python
- Linux的檔案屬性和目錄配置Linux
- Linux系統的目錄及重要檔案Linux
- 筆記:Linux命令(目錄和檔案管理)筆記Linux
- Linux中檔案與目錄的區別Linux
- Linux 移動或重新命名檔案/目錄-mv 的10個實用例子Linux
- 監聽 watch props物件屬性監聽 或深度監聽物件
- Linux 檔案與目錄管理常用命令 記錄Linux
- 使用 SSHFS 掛載遠端的 Linux 檔案系統及目錄Linux
- Linux基礎學習——檔案與目錄管理Linux
- linux伺服器目錄檔案的命令操作Linux伺服器
- Linux解壓檔案到指定目錄的方法Linux