Linux监控文件及目录变动

inotify-tools工具

Inotify一种强大的、细粒度的、异步文件系统监控机制,它满足各种各样的文件监控需要,可以监控文件系统的访问属性、读写属性、权限属性、删除创建、移动等操作等
inotify-tools 是为linux下inotify文件监控工具提供的一套c的开发接口库函数,同时还提供了一系列的命令行工具,这些工具可以用来监控文件系统的事件。 inotify-tools是用c编写的,除了要求内核支持inotify外,不依赖于其他。inotify-tools提供两种工具,一是inotifywait,它是用来监控文件或目录的变化,二是inotifywatch,它是用来统计文件系统访问的次数

  • Ubuntu下安装
    sudo apt-get install inotify-tools

例子

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
29
30
31
32
#!/bin/bash
cd `dirname $0`

rebuild() {
local build_lock="build.lock"
local pending_lock="pending.lock"

test -f $build_lock && {
echo "building is in process and waiting.." >&2
touch $pending_lock
exit 1
}

touch $build_lock
echo -------------------- rebuild
mvn package
echo -------------------- rebuild complete
rm $build_lock

test -f $pending_lock && {
rm $pending_lock
rebuild &
}
}

main() {
local folder="src/"
local file_4_changes="/tmp/monitor.log"
while inotifywait -e create,modify,delete -r $folder -o $file_4_changes; do
rebuild &
done
}; main "$@"
Donate comment here