이전 출력을 삭제하지 않고 GNU 감시

이전 출력을 삭제하지 않고 GNU 감시

암소 비슷한 일종의 영양watch는 프로그램 출력을 검사하는 데 매우 유용한 도구입니다. 프로그램을 실행하고 2초마다 출력을 전체 화면으로 표시합니다.

때로는 이전 출력을 지우는 것이 아니라 타임 스탬프를 사용하여 한 줄씩 인쇄하고 싶을 때도 있습니다. 이를 위해 다음과 같은 bash 스크립트를 사용합니다.

while true; 
    do echo -n "`date`   "; 
    ssh ubuntu@server -o ConnectTimeout=1 "uptime" ; 
    sleep 1; 
done

거기에watch- 이전 출력을 지우지 않고 명령을 실행하고 한 줄에 타임스탬프와 함께 출력을 표시할 수 있는 도구와 비슷합니까?

답변1

간단한 루프에서 찾았다고 말하고 싶지만 여기에서 여러 가지 작업을 수행할 수 있습니다.

당신을 위해 그것을 처리하는 함수를 작성하세요

function uberwatch {
    # call: uberwatch <interval> <command>
    while true; do
        "${@:2}";
        sleep $1;
    done
}

당신은 그것을 당신의 주변 어딘가에 보관할 수 있습니다 ~/.bashrc.

출력을 파일에 기록하지만 다음을 사용하여 계속 볼 수 있습니다.watch

watch "command | tee -a watchlog.log"

여전히 최신 실행 내용만 볼 수 있지만 필요한 경우 기록 로그를 자세히 살펴볼 수 있습니다.

답변2

사실이지만; 날짜를 확인하세요 >> /vat/tmp/watch.log; 수면 600; ls -l 파일명 >> /var/tmp/watch.log; 완료

위의 Artem에서 언급한 while 루프가 마음에 들지만 데이터를 파일에 저장하여 돌아와서 분석할 수 있도록 하여 파일에 대한 리디렉션을 추가했습니다. 내 경우에는 10분마다 파일을 보고 ls -l을 사용하여 파일 크기를 확인합니다.

-어치

답변3

나는 올리를 좋아한다수정된 watch솔루션, 하지만 나중에 로그를 파헤치는 대신 실시간으로 로그를 보는 아이디어가 마음에 듭니다.

아이디어는 다음과 같습니다.

watch 'echo $(date && command 2>&1 | tail -n 1) >> watchlog.log && cat watchlog.log | tail'

설명:

  • echodate와 사이에 개행 문자를 피합니다 command.
  • >>| tee -a출력과 동일 하지만 중복되지 않고 파일에 추가됩니다 watch.
  • 2>&1stderr과 stdout을 결합하여 오류를 포함한 모든 것을 볼 수 있도록 합니다.
  • | tail -n 1date더 깔끔한 실시간 보기를 위해 출력을 마지막 줄(출력이 포함된 줄)로 제한합니다 . 이는 로그 파일 내용에 대한 귀하의 바람일 수도 있고 아닐 수도 있습니다.

관련 정보