tail이 파일의 변경 내용을 인지하지 못하는 증상

도커싱크의 멈춤증상을 5분마다 텍스트 파일을 업데이트 해주는 꼼수로 해결을 시도중이었다.

docker
docker

간단한 도스 배치파일로 5분마다 텍스트 파일(dontdiedockersync.txt)에 시간을 기록하게 하였다.

정상적으로 진행이 되는지를 도커 컨테이너쪽 쉘에서 tail -f dontdiedockersync.txt 로 체크해보는데.. 처음 tail을 실행 했을 때는 잘 보이는데 이후 업데이트된 내용이 출력되질 않았다.

파일의 변경 내용을 컨테이너쪽의 tail은 갱신을 못하는 것이었다.

호스트인 윈도우 머신 쪽에서 baretail로 해당 파일을 감시해보면 파일이 업데이트 된 내용이 잘 보였고, 컨테이너쪽 tail -f를 ctrl+c로 멈추고 텍스트파일을 직접 열어보면 파일의 변경 내용은 잘 들어오고 있었다.

원인을 찾던 중 호스트쪽에서 해당 파일을 보는 것과 컨테이너쪽에복제된 해당 파일은 중요한 차이가 있다는 것을 알게 되었다.

호스트쪽에서는 도스 배치파일에서 >> 연산자를 통한 리다이렉션을 통해 텍스트 파일에 내용을 추가하는 것이고 컨테이너쪽에서는 도커싱크를 통해 파일 자체가 뒤바뀌는 것이기 때문에 tail -f로는 파일내용이 업데이트가 안 되는 것이다.

해결방법 : tail -f 대신 tail -F를 사용한다. (대문자 F)

두 옵션의 차이는?

-F의 경우 파일이 교체되면 다시 열어준다는 점.

생계형 특급 개발자이자 아들 하나 있는 평범한 아빠. 취미는 요리, 캠핑, 뮤직 페스티발 다니기 등이지만 이 블로그에는 주로 개발관련된 내용만 올릴 예정입니다. 워드프레스를 시작한지 얼마 되지않아 사이트가 허전하지만 좋은 내용으로 채우도록 노력하겠습니다. 자주 놀러오세요 ^^
Posts created 54

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top