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
- python監控檔案或目錄變化薦Python
- Linux使用:檔案或目錄的許可權設定Linux
- Linux rm命令:刪除檔案或目錄Linux
- linux沒有那個檔案或目錄Linux
- Linux排查磁碟大檔案或大目錄Linux
- 刪除檔案或目錄提示"檔案或目錄無法刪除"的解決方法!
- 【linux】給目錄或檔案加i、a許可權Linux
- ln 覆蓋普通檔案或目錄
- Linux檔案或目錄顏色一般情況Linux
- Linux tar命令exclude選項排除指定檔案或目錄Linux
- Linux 檔案與目錄Linux
- Linux — 檔案、目錄管理Linux
- Linux學習初期,怎麼給檔案或目錄命名呢?Linux
- linux命令之----cp命令用於複製檔案或目錄Linux
- Linux學習筆記--rm命令(刪除檔案或目錄)Linux筆記
- Linux檔案及目錄管理Linux
- Linux檔案系統、目錄Linux
- 【Linux】檔案系統目錄Linux
- Linux 檔案與目錄管理Linux
- Linux檔案和目錄管理Linux
- Linux中使用rsync——檔案和目錄排除列表Linux
- 【Git】取消追蹤多個檔案或目錄Git
- Linux系統下如何修改檔案或目錄的許可權?Linux
- Linux改變檔案或目錄的訪問許可權命令Linux訪問許可權
- Linux檔案系統-目錄和檔案管理Linux
- nodejs獲取檔案資訊,判斷是檔案或目錄NodeJS
- linux檔案與目錄管理命令Linux
- Linux檔案與目錄管理(2)Linux
- Linux 檔案系統的目錄Linux
- Linux 檔案與目錄管理(轉)Linux
- Linux tar壓縮時排除某個目錄或檔案的引數Linux
- Linux命令:改變檔案或目錄的訪問許可權(轉)Linux訪問許可權
- 無法建立目錄或檔案 無法建立目錄的解決辦法
- Linux SSh scp使用【遠端檔案/目錄的傳輸】Linux