inotifywait 腳本導致遞歸循環

inotifywait 腳本導致遞歸循環

我有一個 inotifywait 腳本,用於監視 ftp 上傳目錄,每當上傳新檔案時,它都會設定正確的權限。

我這樣做是因為遠端客戶端強制使用錯誤的檔案模式並阻止 ftp 伺服器接受 chmod 命令會導致遠端客戶端吐出虛假錯誤。

所以我最後的手段是 inotify 腳本,但這會導致另一個問題,如下:

#!/bin/bash
inotifywait -mrq -e ATTRIB --format "%w%f" /home/user/upload/ | while read FILE; do 
  if [[ -f "$FILE" ]];then
    chown user:apache "$FILE" && chmod 640 "$FILE"
  fi
done

所以我猜測這裡出現的問題是,一旦客戶端上傳並 chmodded 文件,ATTRIB 選項就會被觸發(正如它應該的那樣),但我自己的腳本中生成的 chmod 會導致 ATTRIB 選項再次被觸發...導致遞歸循環。

有沒有辦法明確 inotifywait 它應該忽略自己的操作來防止此循環?

答案1

你不應該inotifywait等待-e attrib,而應該等待-e modify

   modify
   A watched file or a file within a watched directory was written to.

   attrib
   The metadata of a watched file or a file within a watched directory was modified.  This includes timestamps,  file permissions, extended attributes etc.

相關內容