在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 //执行脚本