Bash
大文件的去抖 inotifywait
我將要部署的文件上傳到遠端目錄。該遠端伺服器有一個腳本可以監視目錄中的新文件:
inotifywait --monitor --event create --format '%f' --quiet /foo
當檢測到新文件時,部署過程開始。
問題是上傳需要時間 - 文件一開始寫入就會被檢測到。因此部署失敗,因為它嘗試使用部分文件。
有沒有辦法去抖動,
inotifywait
所以它只有在完全創建後才報告新文件?
正如您所經歷的那樣,監視
create
事件並不是很有用:這些事件在文件創建時觸發,但這並不能告訴您是否已向其中寫入任何數據,也不知道何時完成了數據寫入它。您通常需要監視
close
或close_write
事件。從手冊頁:活動
close_write
被監視的文件或被監視目錄中的文件在以可寫模式打開後被關閉。這並不一定意味著文件被寫入。
close_nowrite
被監視的文件或被監視目錄中的文件在以只讀模式打開後被關閉。
close
監視文件或監視目錄中的文件已關閉,無論它是如何打開的。請注意,這實際上是通過偵聽
close_write
和 來實現的close_nowrite
,因此接收到的所有關閉事件都將作為其中之一輸出,而不是關閉。