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