Vim으로 텍스트 파일을 편집해도 tail -f가 업데이트되지 않습니다 사항이 첫 번째 가상 콘솔에 실시간으로

tail -f a.txt라는 파일의 업데이트를 보는 데 사용 하고 a.txt있습니다.

ls -a >> a.txt두 번째 가상 콘솔 과 같은 것을 사용하여 파일을 업데이트하면 변경 사항이 첫 번째 가상 콘솔에 실시간으로 표시됩니다.

두 번째 가상 콘솔에서 Vim을 사용하여 파일을 업데이트하면 첫 번째 가상 콘솔에 변경 내용이 표시되지 않습니다.

필자가 반드시 해당 창에서 업데이트를 트리거 할 것으로 기대하지는 않지만 tail -f명령을 실행하는 터미널이 왜 정확하게 업데이트되지 않습니까?



답변

로 파일을 편집하면 vim일반적으로 파일을 메모리로 읽은 다음 새 파일을 씁니다. 그래서 tail지금까지 파일 시스템에 남아있는 파일 (의 최신 사본의 부족에서 작동 tail(그리고 다른 프로그램은) 그것을 사용 중지합니다.

tail다음을 사용하여 파일이 아닌 파일 이름 을 따를 수 있습니다 .

tail -F yourfile

대문자를 적어 둡니다F .


답변

내 이해는 일반적으로로 편집 할 때 vim파일 사본을 편집하는 중이며 변경 사항은 디스크에 변경 사항을 쓸 때 이동합니다. 이에 의해 발생하기 때문에 unlink원본을 보내고과 move장소에 새를 보내고, tail원본 파일에 새로운 변경 사항이 표시되지 않습니다.


답변