在实际的生产中,都会存在不同系统的对接问题,比如A系统将数据生产后存放到/data文件下,B系统需要监控/data文件夹下数据的变动情况,来做出调整,linux系统中inotify-tools正好可以完成系统的监控而supervise正好可以完成进程的持续监控,起到出错重启的效果。
inotify-tools
inotify-tools下载地址:http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
上面是inotify-tools的下载地址。
- 安装inotify-tools
tar zxvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure
make
make install
对于make的操作最好在root权限下进行,因为其可能会涉及到创建文件夹或文件的操作,需要对文件夹的访问权限。
- 创建软链接
如果是64位系统
ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib64/libinotifytools.so.0
- 配置参数
echo 104857600 > /proc/sys/fs/inotify/max_user_watches
echo 'echo 104857600 > /proc/sys/fs/inotify/max_user_watches' >> /etc/rc.local
- 设置自启动
vi /etc/rc.local
加入下面的代码
/usr/local/bin/inotifywait -m -r -d -o/var/log/change.log --timefmt '%F %T' --format '%T %w%f %e' -e close_write -e create /usr/local/test
其中/var/log/change.log是日志路径,/usr/local/test是监控的网站路径
reboot重启生效
- 编写监控文件夹的脚本
#!/bin/bash
#filename watchdir.sh
path=$1
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y/%H:%M' --format '%T %w %f' -e modify,delete,create,attrib $path
脚本中命令参数的了解
inotifywait命令参数
-m是要持续监视变化。
-r使用递归形式监视目录。
-q减少冗余信息,只打印出需要的信息。
-e指定要监视的事件列表。
--timefmt是指定时间的输出格式。
--format指定文件变化的详细信息。
可以支持的文件夹的操作access 访问,读取文件。
modify 修改,文件内容被修改。
attrib 属性,文件元数据被修改。
move 移动,对文件进行移动操作。
create 创建,生成新文件
open 打开,对文件进行打开操作。
close 关闭,对文件进行关闭操作。
delete 删除,文件被删除。
- 测试
root@hadoop:/opt/docker-sh# bash watchdir.sh /data
创建docker-sh文件夹
29/11/18/19:19 /data/ docker-sh
创建file文件
29/11/18/19:20 /data/docker-sh/ file
修该文件
29/11/18/19:20 /data/docker-sh/ file
删除文件
29/11/18/19:21 /data/docker-sh/ file
网友评论