
5분마다 덮어쓰이는 파일을 로 보고 싶습니다 less
. less
이전 파일 설명자를 계속 표시하는 대신 새 파일 설명자를 따르도록 하려면 어떻게 해야 합니까 ? watch "cat file"
파일이 너무 길어서 하나의 터미널 창에 들어갈 수 없기 때문에 그렇게 하지 않습니다.
답변1
에서 파일을 보는 동안 F
( ) 명령을 실행하면 이 효과를 얻을 수 있습니다 . 팔로우를 중지하고 다시 페이징으로 전환하려면 다음을 누르세요.Shift+F
less
Ctrl+C
파일은 5분마다 변경되므로 tail -f
더 긴 절전 시간 -s
(기본값은 1초)을 사용하고 지정할 수도 있습니다. 예를 들어,
tail -f -s 60 myfile
myfile
60초마다 출력을 확인합니다 .
편집: 오해의 소지가 있는 질문으로 인해 위의 답변이 만족스럽지 못했습니다. 두 번째 시도는 다음과 같습니다.
less
5분마다 동일한 파일을 다시 열려면 다음을 시도해 보십시오.
while true; do ( sh -c 'sleep 600 && kill $PPID' & less myfile ); done
그러면 5분 후에 상위 프로세스를 종료하도록 지시된 다른 쉘 프로세스를 배경으로 하는 하위 쉘이 생성됩니다. 그런 다음 less
. 백그라운드 쉘 명령이 상위 하위 쉘을 종료하면 "less" 명령을 포함하여 모든 하위 쉘도 종료됩니다. 그런 다음 루프는 프로세스를 다시 시작합니다.
내가 아는 유일한 쉬운 방법은 원래 쉘이 있는 터미널을 종료하는 것입니다. 이것이 허용되지 않는 경우 "killfile" 트릭을 사용할 수 있습니다.
touch killfile
while [ -f killfile]; do stuff; done
작업을 중지하려면 stuff
다른 rm
쉘에서 파일을 종료하십시오.
답변2
에서 비슷한 작업을 수행할 수 있습니다 vim
.
다음 서버 세션을 시작합니다 vim
.
vim -R --servername refresh_session
그런 다음 다른 콘솔에서 파일 업데이트를 모니터링하고 파일이 업데이트되는 즉시 파일을 다시 로드하도록 vim 세션에 지시합니다.
inotifywait -e close_write -m your_log_file | while read filename events; do
vim --servername refresh_session --remote $filename
done
몇 가지 문제가 있습니다.
- 물론 의 기능
vim
으로 컴파일되지 않은 경우에는 작동하지 않습니다clientserver
. inoifywait
파일이 삭제되면 작동이 중지됩니다. 그러니 당신의 파일을 덮어쓰길 바랍니다. 물론 이 문제를 해결하는 것도 가능합니다.
좀 더 유사한 경험을 원한다면 매크로를 사용 less
하여 .less
less
vim
/usr/share/vim/vim73/macros/less.sh --servername refresh_session
답변3
다음 명령을 시도해 볼 수도 있습니다: tail -f file
답변4
나는 오래되었지만 "덜" 비슷한 프로그램("호출기")을 발견했습니다. 파일을 새로 고치는 "R" 명령이 있습니다.
그것은 ~라고 불린다"lv", 다음을 사용하여 Ubuntu에 설치할 수 있습니다.
sudo apt install lv
다만, 자동 재로드 기능은 없는 것 같습니다.