1
| yum install -y inotify-tools
|
编写监控脚本
以文件变化自动提交gitlab为例
1 2 3 4 5 6
| vim auto-commit-git.sh
DATE=`date +%Y-%m-%d` FILE_HOME=/data/www/kode/data/User/root/home/note/ cd ${FILE_HOME} && git add . && git commit -m "${DATE}";git push http://root:xxx@gitlab.xxx.com/root/note.git master
|
- 编写循环监控脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| vim monitor_note.sh
filename=/data/www/kode/data/User/root/home/note
script=/data/entrypoint/scripts/auto-commit-git.sh
inotifywait -mrq --format '%e' --event create,delete,modify $filename | while read event do case $event in MODIFY|CREATE|DELETE) bash $script ;; esac done
|
- 运行脚本监控目录
1 2 3
| chmod +x auto-commit-git.sh chmod +x monitor_note.sh nohup sh monitor_note.sh >/tmp/inotify.log 2>&1
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| @<file> --fromfile <file> -m|--monitor -d|--daemon -o|--outfile <file> -s|--syslog -r|--recursive -q|--quiet --exclude <pattern> --excludei <pattern> -t <seconds>, --timeout <seconds> -e <event>, --event <event> -c, --csv --timefmt <fmt> --format <fmt> 指定输出格式 %w 表示发生事件的目录 %f 表示发生事件的文件 %e 表示发生的事件 %Xe 事件以“X”分隔 %T 使用由--timefmt定义的时间格式
|
inotify-tools事件选项--event
可以监听的事件如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| access 读取文件或目录
modify 写文件或目录
attrib 更改文件或目录属性
close_write 文件在写后关闭
close_nowrite 文件在只读模式下被读后关闭 close 文件或目录被关闭
open 文件或目录被打开
moved_from 文件或者目录移出监视目录
moved_from 文件或目录从监视目录移出
move 文件或目录移动
create 创建文件或目录
delete 删除文件或目录
delete_self 删除后不再监听此文件或目录
unmount 文件系统取消挂载,此后不在监听该文件系统
|