私は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
ファイルが別のファイルへのハードリンクであることを認識し、この場合はアップロードしていると思いますか?