초당 수백 줄(예: 초당 16x, 12개의 특정 줄)을 생성하는 로그 파일이 있습니다.
이 로그 파일을 실시간으로 깔끔하게 표시하기 위해 명령줄이나 셸 스크립트를 실행하고 싶습니다. 그러나 를 실행하면 tail -f logfile.txt
텍스트가 터미널 창 밖으로 빠르게 스크롤되어 사람의 눈으로 읽을 수 없습니다. 저는 아직 명령줄을 마스터하지 않았기 때문에 지금 당장 생각할 수 있는 것은 다음과 같습니다.
터미널 창에서 한 번에 12줄만 인쇄하고 자동으로 새로 고치기를 원합니다. 예를 들면 다음과 같습니다.
// while ( Ctrl+C hasn't been hit )
// {
// clear terminal window
// print last 12 lines of logfile.txt
// wait until logfile is 12 lines longer
// }
어떤 아이디어가 있나요?
편집: 할 수 있다는 것이 밝혀졌습니다 tail -f logfile.txt
. 터미널 창 높이를 12로 설정하면 됩니다. 이를 통해 내가 원하는 것에 매우 가까워지지만 "순진한" 접근 방식처럼 보입니다. 누군가가 더 우아한 솔루션을 갖기를 바랍니다.
답변1
M초마다를 사용하여 마지막 N개 행을 볼 수 있습니다 watch
. N=20, M=3이라고 가정하면,
watch -n3 tail -n20 logfile.txt
분명히 업데이트 간격이 쓰기 간격을 초과하면 많은 출력이 손실될 것입니다. 그러나 제가 이해한 바로는 이것이 귀하가 원하는 것입니다.
답변2
Bash >= 4에는 특별한 내장 기능이 있습니다 mapfile
:
tail -f logfile.txt | while mapfile -t -n 12 lines && ((${#lines[@]})); do
clear
printf '%s\n' "${lines[@]}"
sleep 0.1 # Might be necessary or you won't see anything at all except the last batch of lines
done
답변3
나는 그것을 사용하여 less
로그를 보는 것을 좋아합니다. 몇 가지 유용한 less 명령:
- G마지막 줄로 이동
- R파일 새로 고침(다음에
G
) - F파일 실시간 테일링(일명
tail -f
): Ctrl+C테일링을 중지하려면 클릭하세요.
답변4
tail -f logfile.txt | less
Glenn Jackman이 강조한 인터페이스를 사용하여 이동할 수 있습니다.
- F따르다
- Ctrl- C팔로우 중지
- q그만두다
- /정규식 검색