inotify 이벤트를 사용하여 변경 사항이있는 파일을보고 있습니다 (파이썬에서 libc로 호출).
동안 일부 파일의 경우 git clone
I는 다음을 참조하십시오, 나는 이상한 것을 볼 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의 도커 내부에 있지만 원격 시스템의 Linux의 도커에서도 동일한 증거를 보았으므로 MacOS 측면과 관련이 없다는 의혹이 있습니다. 보고 있고 동일한 도커 컨테이너 git clone
에 있으면 이것을보고 있습니다.
내 질문 :
이러한 파일에서 이러한 이벤트가 누락 된 이유는 무엇입니까?
그것에 대해 무엇을 할 수 있습니까? 특히,이 파일에 대한 쓰기 완료에 어떻게 응답합니까? 참고 : 이상적으로 "미완성"작문을 불필요하게 / (올바르게) 업로드하지 않도록 쓰기가 "완료"되었을 때 응답하고 싶습니다.
편집 : https://developer.ibm.com/tutorials/l-inotify/를 읽으면 내가보고있는 것과 일치하는 것처럼 보입니다.
- 와 같은 이름을 가진 별도의 임시 파일
tmp_pack_hBV4Alz
이 작성, 수정 및 닫힙니다. - 최종 이름 으로이 파일에 대한 하드 링크가 작성됩니다
.pack
. - 원래
tmp_pack_hBV4Alz
이름이 삭제됩니다.
파일을 업로드하는 트리거로 inotify를 사용하려고하는 내 문제가 .pack
파일이 다른 파일에 대한 하드 링크 임을 인식 하고이 경우 업로드하는 것으로 줄어 듭니다 .