私はinotifyイベントを使用してファイルの変更を監視しています(たまたま、Pythonからlibcを呼び出しています)。
中にいくつかのファイルについてはgit clone、私は奇妙な何かを参照してください。私が見IN_CREATEたイベントを、そして経て、私が見lsたファイルがコンテンツを持っていること、しかし、私は見ることはありませんIN_MODIFYかIN_CLOSE_WRITE。私IN_CLOSE_WRITEはファイルに応答したいので、特に問題を引き起こしています。具体的には、ファイルのコンテンツのアップロードを開始することです。
異常な動作をするファイルは.git/objects/packディレクトリにあり、末尾が.packまたは.idxです。gitが作成する他のファイルには、より規則的なIN_CREATE-> IN_MODIFY-> IN_CLOSE_WRITEチェーンがあります(私はIN_OPENイベントを監視していません)。
これはMacOSのdockerの内部にありますが、リモートシステムのLinuxのdockerでも同じことを確認したため、MacOSの側面は関係ないのではないかと疑っています。見ていgit cloneて同じ Dockerコンテナーにいる場合、これが表示されます。
私の質問:
これらのファイルでこれらのイベントが欠落しているのはなぜですか?
それについて何ができますか?具体的には、これらのファイルへの書き込みの完了にどのように応答できますか?注:理想的には、「未完成」の文章を不必要に(誤って)アップロードしないように、「完成」したときに返信したいと思います。
編集:https ://developer.ibm.com/tutorials/l-inotify/を読むと、私が見ているものと一致しているように見えます
- のような名前の個別の一時ファイル。
tmp_pack_hBV4Alz作成、変更、および閉じられます。 - ハードリンクは、最終的に、このファイルに作成された
.pack名前。 - 元の
tmp_pack_hBV4Alz名前は削除されます。
私の問題は、inotifyをファイルのアップロードのトリガーとして使用しようとしていて、その.packファイルが別のファイルへのハードリンクであることを認識し、この場合はアップロードしていると思いますか?