tail -f 파일 변경 사항을 추적하지 않습니다


14

최근에 tail -f다음과 같은 일부 텍스트 파일을 모니터링 하는 데 사용 하려고했습니다 tail -f /var/sometext.

그러나 일부 테스트를 수행해도 작동하지 않는 것 같습니다. 내가 한 것은 새 파일을 만들고 실행 한 것입니다. tail -f /home/name/text그런 다음 vim에서 로그를 열고 일부 편집을 수행 한 후 저장했습니다. 꼬리가 변경 내용을 "보지"않는 것 같습니다.

이상한 점은 달리기가 echo "hello" >> /home/name/text잘 작동 하는 것 같습니다 (꼬리가 변화를 봅니다). 파일을 저장할 때 파일 설명자와 새 inode가 생성되는 것과 관련이있는 곳을 읽었습니다.

누군가 나를 위해 이것을 설명 할 수 있습니까? 이것이 실제로 어떻게 작동하는지는 알지 못했지만 파일 설명자가 무엇인지 알 수 있습니다.

답변:


30

-finode가 뒤 따른다. 프로그램이 파일을 완전히 재생성 할 때와 같이 이름을 따르려면 -F대신 사용하십시오.


깔끔한, 나는 그것을 몰랐다. 유틸리티를 항상 사용한다면 유틸리티 맨 페이지 (특히?)를 읽는 데 비용이 든다!
Lyle

1

tail -f는 파일의 끝을보고 파일 끝이 이동하면 새 내용을 인쇄하고 파일 끝이 다시 이동할 때까지 기다립니다. 즉, 문서 중간의 변경 사항은 tail -f로 발견되지 않고 추가됩니다.


-1

실제 이야기는 다음과 같습니다.

tail -f는 디스크가 아닌 메모리를 모니터합니다. 그러나 텍스트 편집기를 연 파일 편집과 같은 보호 된 메모리에는 액세스 할 수 없습니다.


tail -f명령 (파일을 연 후 파일 기술자) 파일에서 작동합니다. 실제로 파일의 새로운 수정은 여전히 ​​메모리 (버퍼, 캐시)에 있지만 중요하지 않습니다. tail여전히 파일 디스크립터를 통해 파일에 액세스합니다. 파일이 어떻게 수정되는지는 중요하지 않습니다. --- Ignacio Vazquez-Abrams의 대답은 정확합니다. 편집기는 현재 파일 (에서 열린 파일)을 수정하지 않고 tail이전 파일과 동일한 이름으로 새 파일에 변경 사항을 저장합니다.
pabouk
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.