ฉันกำลังดูไฟล์สำหรับการเปลี่ยนแปลงโดยใช้ inotify เหตุการณ์ (มันเกิดขึ้นจาก Python โทรเข้า libc)
สำหรับไฟล์บางช่วงgit clone
ผมเห็นบางสิ่งบางอย่างที่แปลก: ผมเห็นIN_CREATE
เหตุการณ์และฉันเห็นทางls
ว่าไฟล์มีเนื้อหา แต่ผมไม่เคยเห็นหรือIN_MODIFY
IN_CLOSE_WRITE
นี่เป็นสาเหตุให้ฉันมีปัญหาเนื่องจากฉันต้องการตอบกลับIN_CLOSE_WRITE
ในไฟล์: โดยเฉพาะเพื่อเริ่มต้นการอัปโหลดเนื้อหาไฟล์
แฟ้มที่มีพฤติกรรมผิดปกติอยู่ใน.git/objects/pack
ไดเรกทอรีและพวกเขาสิ้นสุดในหรือ.pack
.idx
ไฟล์อื่น ๆ ที่คอมไพล์สร้างมีเชนมากกว่าปกติIN_CREATE
-> IN_MODIFY
-> IN_CLOSE_WRITE
(ฉันไม่ได้ดูIN_OPEN
เหตุการณ์)
นี่คือ Docker บน MacOS แต่ฉันได้เห็นหลักฐานของ Docker บน Linux ในระบบรีโมตแล้วดังนั้นความสงสัยของฉันคือ MacOS นั้นไม่เกี่ยวข้องกัน ฉันเห็นสิ่งนี้หากกำลังดูและgit clone
อยู่ในคอนเทนเนอร์นักเทียบท่าเดียวกัน
คำถามของฉัน:
เหตุใดเหตุการณ์เหล่านี้จึงหายไปในไฟล์เหล่านี้
สิ่งที่สามารถทำได้เกี่ยวกับมันได้หรือไม่ โดยเฉพาะฉันจะตอบสนองต่อความสมบูรณ์ของการเขียนไฟล์เหล่านี้ได้อย่างไร? หมายเหตุ: นึกคิดฉันต้องการตอบสนองเมื่อการเขียนเป็น "เสร็จสิ้น" เพื่อหลีกเลี่ยงความจำเป็น / (ไม่ถูกต้อง) การอัปโหลดการเขียน "ยังไม่เสร็จ"
แก้ไข: การอ่านhttps://developer.ibm.com/tutorials/l-inotify/ดูเหมือนว่าสิ่งที่ฉันเห็นมีความสอดคล้องกับ
- ไฟล์ชั่วคราวแยกต่างหากที่มีชื่อเหมือน
tmp_pack_hBV4Alz
กำลังสร้างแก้ไขและปิด - สร้างฮาร์ดลิงก์ไปยังไฟล์นี้โดยใช้
.pack
ชื่อสุดท้าย tmp_pack_hBV4Alz
ชื่อเดิมจะถูกลบ
ฉันคิดว่าปัญหาของฉันซึ่งพยายามใช้ inotify เป็นตัวเรียกให้อัปโหลดไฟล์จากนั้นลดการสังเกตว่า.pack
ไฟล์นั้นเป็นการเชื่อมโยงอย่างหนักไปยังไฟล์อื่นและการอัปโหลดในกรณีนี้คืออะไร