如何查看导致 watch -g 退出的更改

如何查看导致 watch -g 退出的更改

我用来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

相关内容