나는 watch -g
명령의 출력을 모니터링하고 명령이 변경되자마자 종료하는 데 사용합니다. 문제는 종료하면 watch의 모든 UI 요소(모니터링 중인 명령의 출력 포함)가 사라진다는 것입니다. 시계가 종료되기 전에 출력에 어떤 일이 발생하는지 알고 싶습니다. 가능합니까?
답변1
watch -g "ls | tee -a log_file"
log_file
명령의 출력을 얻게 됩니다 . ls
예를 들면, 물론 자신만의 명령을 사용하거나 더 많은 명령이 있는 경우 아래 답변에 표시된 대로 괄호 안에 넣어야 합니다. ~에 귀속됨이 답변.
마지막 출력과 끝에서 두 번째 출력 간의 차이를 더 쉽게 식별할 수 있도록 빈 새 줄과 일부 마커를 추가할 수 있습니다.
watch -g "(echo; echo 'New output below:'; echo '------------------'; ls) | tee -a log_file"
답변2
watch를 사용하지 않으려는 경우 이를 시도해 보십시오. 명령이 실패할 때 최신 출력이 표시됩니다. 귀하의 명령으로 바꾸십시오 somecommand
.
logFile='/var/log/somecommand.log'
somecommand &> $logFile &
expectedOutput=$(cat $logFile)
while true; do
somecommand &> $logFile &
actualOutput=$(cat $logFile)
if [[ "$actualOutput" != "$expectedOutput" ]]; then
echo "Process failed, here is the most recent output..."
echo "$actualOutput"
exit 1
fi
sleep 2
done