전체 파일을보고 해당 파일에 더 많은 데이터가 추가 될 때까지 기다리는 방법은 무엇입니까?


21

전체 파일을 읽고 전체 tail -f 파일을 표시하는 것처럼 입력 대기 상태로 만들고 싶습니다 .

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

파일 길이를 모르는 경우 어떻게해야합니까?


2
당신은 이미 꼬리가 당신이 원하는 것에 가깝다는 것을 알고 있습니다. 매뉴얼 페이지를 읽었습니까?
njzk2

1
less"F"키가 있습니다. 상호 작용이 필요한 경우 유용합니다.
Thorbjørn Ravn Andersen

답변:


33

tail-n끝에서 표시 할 줄 수를 지정하여 추가 할 수 있습니다. 이 줄과 함께 사용할 수 있습니다 -f. 경우의 인수 -n로 시작 +그 행 라인의 수는 시작 부분 ( 0그리고 1, 전체 파일을 표시 2@ 벤으로 나타낸 바와 같이, 첫 번째 행을 나타내는 이동). 그래서 그냥하십시오 :

tail -f -n +0 filename

로그 파일을 회전 얻을 경우, 당신은 추가 할 수 있습니다 --retry(또는 결합 -f and --retry-F@Hagen가 제안)

또한 그래픽 터미널에서는 마우스 및 PageUp/ 또는 / PageDown를 사용하여 기록을 다시 스크롤 할 수 있습니다 (버퍼가 충분히 크다고 가정) . Ctrl+ C를 사용 하여 종료 하더라도이 정보는 그대로 유지됩니다 tail. less이것을 사용 하는 것이 훨씬 덜 편리하고 AFAIK를 사용하면 스크롤을 위해 키보드를 사용해야하며 less으로 시작하는 것을 잊어 버린 경우 termcap을 초기화 해제 하는 것을 막을 방법을 모릅니다 -X.


1
+1 내가 글을 게시하자마자 답이 나타 났는데 내 작업에도 불구하고 네 답이 더 낫다.
Julie Pelletier

1
다른 답변이 있고 새로 고치려면 클릭해야한다는 메시지를 계속 입력하는 동안 메시지가 나타납니다. 귀하의 답변은 작업을 완료하지만 처음부터 (으로 강제) 계산 +이보다 효율적으로 구현 된다는 사실에 놀라지 않을 것 입니다.
Anthon

1
+1에 대해 가르쳐 주셔서 감사 +0합니다. 당신은 할 수 있습니다 -F대신 -f회전 로그 파일에 대한
하겐 폰 Eitzen에게

나는 여기에 하나 하나가 있다고 생각합니다. tail -n +1파일의 시작 부분을 보여주고 tail -n +2한 줄을 건너 뜁니다. 숫자가 첫 번째 표시 줄의 줄 번호라고 생각합니다.
Ben Millwood

1
@Anthon 감사합니다! 이것이 바로 내가 필요한 것입니다!
malworm

37

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

less +F <file>

그것은 당신에게 전체 파일을 보여줄 것이고, 모든 힘을 가지고 있으며 less새로운 입력을 기다릴 것입니다. 입력 대기를 중단하고 특정 부분을 읽으려면로 ^C시작하고로 다시 시작할 수 있습니다 F.

F명령에서 항상 사용할 수 less있는 파일 열기를하면서 당신이 변화를보고 결정하는 경우, less타격, F그것을 켜집니다. 그것을 지적 해 주신 hiergiltdiestfu와일드 카드 덕분 입니다.


2
이것은 실제로보다 훨씬 낫습니다 tail. 팁 고마워; 나는 이것을 사용하려고 생각하지 않았을 것 less입니다. 다른 사람을위한 참고 사항 : 실행 less <file>한 다음을 입력 할 수도 있습니다 F.
와일드 카드

3

/ u / Anthon의 답변 외에도 다음과 같은 작업을 수행 할 수 있습니다.

{ cat filename; tail -0f filename; }

-0꼬리 옵션에 해당 -n 0DISPALY 0 라인 : 의미한다. 그러나는 -f새로운 줄을 표시합니다.

괄호가 필요하지 않습니다 { }. 때로는 파일 설명자를 어떤 식 으로든 리디렉션하려고하기 때문에 사용했습니다. 예를 들어 :

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

벤 밀우드 (Ben Milwood)는 다음과 같이 말합니다. cat작업 종료와 작업 시작 사이에 파일이 커지는 경쟁 조건이있을 수 있습니다 tail. 그러나 이것은 학술 솔루션에 대한 "학문적"문제입니다.


3
cat완료와 tail시작 사이에 파일이 커지면 해당 행이 표시되지 않습니다. 큰 문제는 아니지만 순수한 tail솔루션 을 선호하는 이유 입니다.
Ben Millwood

{ cat; tail -n +0 -f; } < filetail은의 cat종료와 tail시작 사이에 나타나는 새로운 데이터를 인쇄하기 때문에 경쟁을 고칠 것이라고 생각 합니다. 물론 cat중복을 만듭니다 . 리디렉션은 한 번만 발생하며 tailstdin은 cat이미 EOF를 읽은 파일 설명자 이므로 현재 위치는 cat중지 된 위치입니다 . echo foo >> file내부 에을 넣어서 테스트하여 {}매번 레이스를 만들 수 있습니다.
Peter Cordes

2

watch 명령은 당신을 위해 그렇게해야합니다.

시도해 볼 수도 있습니다

less +FG 

더 많은 옵션이 있습니다 less큰 파일이라고 말하면 파일을 스크롤 명령 있습니다.


또한 점점 커지는 파일을 따르지 않습니다.
Shadur

7
@Shadur는, 그것이 +F옵션입니다
glenn jackman
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.