Linux利用inotify-tools的inotifywait實現:當檔案夾內容改變時自動執行一段指令碼 當我在建一個rpm包管理伺服器時,裡面有個這樣的要求,要求當有新的rpm存入指定目錄時,自動執行一段指令碼去對這個rpm包進行檢測。 這裡利用了inotify-tools的inotifywait的模組,裡面有個事件處理的參數-e,見它的手冊。 My Code如下: [python] #/bin/bash ################################################################ # automatically run a script(action.sh) when the contents # of a directory (${EVENTPATH}) changed. # pls. install the inotify-tools-3.13-1.el4.rf.i386.rpm module # before use this scripts # Aborn Jiang (aborn.jiang@gmail.com) # Sep.8, 2013 ################################################################ EVENTPATH="." MSG=".inotifymsg" PATTERN=".rpm$" # only when the rpm files changed. while inotifywait -e modify -e create -e delete -e moved_to -e moved_from \ ${EVENTPATH} 1>${EVENTPATH}/${MSG} 2>/dev/null; do FILE=`cat $EVENTPATH/${MSG} |egrep ${PATTERN} | awk '{print $3}' ` ACTION=`cat $EVENTPATH/${MSG} |egrep ${PATTERN} | awk '{print $2}' ` [ ! -z ${FILE} ] && \ echo "in the directory ${EVENTPATH}, the file: ${FILE} modified, action:${ACTION} " && \ ./action.sh done 我這裡是只檢測是不是有rpm變動,你可以修改代碼裡的PATTERN變數內容,就可以檢測任何檔案!如果你要檢測任何檔案,你可以把PATTERN設定為“*”我的執行指令碼放在action.sh裡