在linux內核中,默認的inotify機制提供三個調控參數:max_queue_events、max_user_instances、max_user_watches,分別表示監控事件隊列、最多監控實例數、每一個實例最多監控文件數html
[root@localhost opt]# cat /proc/sys/fs/inotify/max_queued_events 16384 [root@localhost opt]# cat /proc/sys/fs/inotify/max_user_instances 128 [root@localhost opt]# cat /proc/sys/fs/inotify/max_user_watches 8192
當要監控的目錄、文件數量較多或者變化比較頻繁時,建議加大這三個參數的值,例如:直接修改/etc/sysctl.conf配置文件,將管理隊列設爲32 768,實例數設爲1024,監控數設爲1048 576(建議大於監控目標的總文件數)linux
[root@localhost ~] vim /etc/sysctl.conf
fs.inotify.max_queued_events = 16384 fs.inotify.max_user_instances = 1024 fs.inotify.max_user_watches = 1048567 [root@localhost ~] sysctl -p fs.inotify.max_queued_events = 16384 fs.inotify.max_user_instances = 1024 fs.inotify.max_user_watches = 1048567
使用inotify機制還須要安裝inotify-tools,一邊提供inotifywait和inotifywatch輔助工具程序,用來監控和彙總改動狀況。inotify-tools下載地址「http://inotify-tools.sourceforge.net/」vim
[root@localhost ~] tar zxvf /abc/inotify-tools-3.14.tar.gz -C /opt/ [root@localhost ~] cd /opt/inotify-tools-3.14/ [root@localhost inotify-tools-3.14] ./configure [root@localhost inotify-tools-3.14] make && make install
以監控網站目錄/var/www/html爲例,能夠先執行inotifywait命令,而後在另外一個終端向/var/www/html目錄下添加、移動文件,跟蹤頻屏幕輸出結果。其中-e指定監控事件,-m爲持續監控,-r遞歸整個目錄,-q簡化輸出信息bash
vim /opt/inotify.sh
#!/bin/bash INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/" RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ backuper@192.168.32.207::wwwroot/" $INOTIFY_CMD | while read DIRECTORY EVENT FILE do if [ $(pgrep rsync | wc -l) -le 0 ] ; then $RSYNC_CMD fi done cd /opt chmod +x inotify.sh ./inotify.sh //執行腳本