디버깅 전략 - 어떤 프로세스가 파일을 수정하려고 하는지 어떻게 알 수 있나요?

디버깅 전략 - 어떤 프로세스가 파일을 수정하려고 하는지 어떻게 알 수 있나요?

git reset HEAD제가 사용하고 있는 많은 개발 도구 중 하나가 프로젝트에 버그를 발생시켜 모든 작업을 잃게 만드는 이상한 버그가 있습니다 . git reflog를 확인하면 이를 확인할 수 있습니다.

어떤 도구가 범인인지 알아내기 위해 제거 프로세스를 사용해 보았지만 시간이 매우 많이 걸립니다.

.git어떤 프로세스가 디렉터리와 상호 작용하는지 확인하기 위해 디렉터리에 대한 모든 쓰기를 차단하는 방법이 있는지 궁금합니다 . 괜찮나요?

답변1

inotify 도구를 사용하여 이 디렉터리를 모니터링할 수 있습니다. 그런 다음 lsof결과를 확인하십시오 . 이제 문제는 어떤 이벤트를 원하는지입니다. 그에 따라 조정하고 man inotifywait더 많은 이벤트 옵션을 확인하세요. 나는 파일에 쓰기로 결정하고 다음을 만들었습니다.

 inotifywait -m -r -e modify -e create --format %w%f ~/.git  | 
 while read file ; do
    lsof ${file} 2>/dev/null
 done

이제 예를 들어 실행하면 dd if=/dev/random of=/home/user/.git/test bs=1M count=10누가 그랬는지 알 수 있습니다.

관련 정보