전체 파일을 보고 파일에 더 많은 데이터가 추가될 때까지 기다리려면 어떻게 해야 합니까?

전체 파일을 보고 파일에 더 많은 데이터가 추가될 때까지 기다리려면 어떻게 해야 합니까?

tail -f 전체 파일을 표시하는 것처럼 전체 파일을 읽고 입력을 기다리게 하고 싶습니다 .

이 파일은 파일이기 때문에 길이는 항상 변경됩니다 .log.

파일 길이를 모르는 경우 어떻게 해야 하나요?

답변1

이를 달성하는 더 좋은 방법이 있습니다.

less +F <file>

완전한 기능을 갖춘 전체 파일이 표시되며 less새로운 입력을 기다립니다. 입력 대기를 중지하고 특정 섹션을 읽으려면 중지 ^C및 계속을 사용할 수 있습니다 F.

F명령은 에서 항상 사용할 수 있습니다 less. 에서 파일을 열 때 변경 사항을 관찰하려면 less클릭 F하여 엽니다. 감사해요힐게르트 디스테프그리고와일드카드이것을 지적하십시오.

답변2

tail끝부터 표시할 줄 수를 지정하기 위해 추가할 수 있으며 -n와 함께 사용할 수 있습니다 -f. 인수가 -n로 시작 하면 +처음부터 줄 수를 나타냅니다( 0그리고 @Ben이 제안한 대로 첫 번째 줄을 건너뛰었음을 나타내는 1전체 파일을 표시합니다 ). 2그러니 이렇게 하세요:

tail -f -n +0 filename

로그 파일이 회전된 경우 추가 (또는 --retry@Hagen 제안에 따라 -f and --retry병합 -F) 할 수 있습니다.

또한 그래픽 터미널에서는 마우스 및 PageUp/ PageDown(버퍼가 충분히 크다고 가정)를 사용하여 기록으로 다시 스크롤할 수 있으며 이 정보는 Ctrl+ 를 사용 C하여 종료하더라도 그대로 유지됩니다 tail. 이것을 사용하면 그다지 편리하지 않으며, less내가 아는 한 스크롤하려면 키보드를 사용해야 하며 .less-X

답변3

watch명령이 이 작업을 수행해야 합니다.

당신은 또한 시도할 수 있습니다

less +FG 

less파일이 큰 파일이라고 말했으므로 파일을 스크롤하는 명령 에 더 많은 옵션이 있습니다 .

답변4

/u/Anthon의 답변 외에도 다음을 수행할 수 있습니다.

{ cat filename; tail -0f filename; }

tail 옵션은 -0와 동일합니다 -n 0. 즉, 0줄을 표시합니다. 그러나 -f새로운 줄이 표시됩니다.

교정기는 필요하지 않습니다 { }. 때때로 어떤 방식으로든 파일 설명자를 리디렉션하고 싶기 때문에 이를 사용합니다. 예를 들어:

{ cat ; tail -0f -; } < /var/log/messages

catBen Milwood는 다음과 같이 지적합니다. 작업 종료와 작업 시작 사이에 파일이 커지는 경쟁 조건이 발생할 수 있습니다 tail. 그러나 이는 학문적 해결이 필요한 '학술적' 문제이기도 하다.

관련 정보