inotify-tools工具

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

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

例子

#!/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 "$@"