1
我有一個shell腳本,在其中我使用'inotifywait'來監視三個目錄。只要文件進入目錄'dirToProcess',一些處理完成,然後文件被移動到'successDir'或'failedDir'目錄。一次執行後Inotifywait沒有執行
現在只要任何文件被移動或複製到任何需要inotifywait執行的目錄中。
這裏是我執行的代碼:
inotifywait $dirToProcess $successDir $failedDir -e create -e moved_to --
exclude "\.(swx|swp|end|en1)" |
while read path action file; do
if [ -f $dirToProcess/$file ]; then
doSomething;
elif [ -f $successDir/$file ]; then
cleanDir $successDir # function which has some specific logic
exit 0;
elif [ -f $failedDir/$file ]; then
cleanDir $failedDir # function which has some specific logic
exit 0;
else
c4lx_log "File $file not in poll, archive or failed, then why did we get notified?"
exit 0;
fi
這裏的問題是: 只要文件進來「dirToProcess」 inotifywait注意到它和被調用。但處理後,當文件被移動到'$ successDir'或'$ failedDir'(通過處理'dirToProcess'inotifywait中的文件相同的代碼沒有得到執行。但如果我在這兩個目錄中手動移動文件似乎一切似乎是工作的罰款。
有人可以給我一些指針這裏或解釋,如果我在這裏丟失任何細節。
(我嘗試使用-m或-r選項與inotifywait但似乎並不奏效)
感謝
正如我所說我做的,但即使與-m它似乎有時在某個時間,有時不工作。 – user1188611
你需要更具體。沒有'-m'就絕對不行。用'-m',你可能有其他一些問題需要診斷。 – chepner
所有代碼都調用一些其他函數來處理目錄dirToProcess中的文件,並將文件移動到'successDir'或'failedDir'。我不知道如何可以成爲一個問題 – user1188611