태그 보관물: watch

watch

기능과 같은 “업데이트 파일”이 적음 않고 새 파일 디스크립터를 따르

로 5 분마다 덮어 쓰는 파일을보고 싶습니다 less. less이전 파일 디스크립터를 계속 표시하지 않고 새 파일 디스크립터를 따르 려면 어떻게 해야합니까? watch "cat file"파일이 너무 길어서 하나의 터미널 창에 맞지 ​​않기 때문에 그렇게하지 않습니다.



답변

에서 파일을 보면서 F명령 ( Shift+F)을 실행하여이 효과를 얻을 수 있습니다 less. 팔로우를 중단하고 페이징으로 다시 전환하려면Ctrl+C

파일은 5 분마다 만 변경되므로 tail -f, 더 긴 절전 시간을 사용 하고 지정할 수도 있습니다 -s(기본값은 1 초). 예를 들어

tail -f -s 60 myfile

myfile60 초마다 출력을 확인 합니다.

편집 : 잘못된 질문으로 인해 위의 답변이 만족스럽지 않았습니다. 두 번째 시도는 다음과 같습니다.

less5 분마다 같은 파일을 다시 열려면 다음을 시도하십시오.

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다른 쉘에서 killfile을.


답변

에서 비슷한 것을 할 수 있습니다 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

답변

나는 프로그램 ( “pager”)과 같이 오래되었지만 매우 “적은”것을 발견했다. 파일을 새로 고치는 “R”명령이 있습니다.

“lv” 라는 이름으로 다음을 사용하여 Ubuntu에 설치할 수 있습니다.

sudo apt install lv

그러나 자동 새로 고침 기능이없는 것 같습니다.


답변

다음 명령을 시도해보십시오 : tail -f file


답변

꼬리는 당신의 친구입니다. “tail -f filename”은 새로운 줄이 나타날 때 나타납니다.

또는 파일 중간에서 변경된 사항을 찾고 있다면 몇 분마다 스크립트를 실행하여 파일을 임시 위치에 복사하고 diff를 수행하십시오.


답변