リモートディレクトリに展開するファイルをアップロードします。リモートサーバーには、ディレクトリ内の新しいファイルを監視するスクリプトがあります。
inotifywait --monitor --event create --format '%f' --quiet /foo
新しいファイルが検出されると、デプロイプロセスが開始されます。
問題は、アップロードに時間がかかり、ファイルが書き込みを開始するとすぐに検出されることです。そのため、部分ファイルを使用しようとしているため、展開は失敗します。
inotifywait
新しいファイルが完全に作成された後にのみ報告されるようにジッタを削除する方法はありますか?
答え1
経験したように、create
イベントに焦点を当てることはあまり役に立ちません。これらのイベントはファイルが生成されたときに発生しますが、データが記録されたのか、記録されたのかはわかりません。完全それにデータを書きなさい。
通常、監視またはclose
イベントclose_write
が必要です。マニュアルページから:
活動
close_write
監視されたファイルまたは監視されたディレクトリのファイルが書き込み可能モードで開かれて閉じました。これは必ずしもファイルが作成されたことを意味するわけではありません。
close_nowrite
監視されたファイルまたは監視されたディレクトリのファイルが読み取り専用モードで開かれて閉じました。
close
監視されたファイルまたは監視されたディレクトリ内のファイルは、開いている方法に関係なく閉じられます。これは実際に
close_write
およびを受信することによって行われるため、close_nowrite
受信されたクローズイベントはCLOSEではなくそれらの1つに出力されます。