watch -gを終了させる変更を表示する方法

watch -gを終了させる変更を表示する方法

私はwatch -gコマンドの出力を監視し、コマンドが変更されるとすぐに終了するために使用します。問題は、終了すると、ウォッチのすべてのUI要素(監視中のコマンドの出力を含む)が消えることです。時計が終了する前に出力に何が起こるかを知りたいです。可能ですか?

答え1

watch -g "ls | tee -a log_file"

log_fileコマンドの出力が得られます。lsたとえば、もちろん、独自のコマンドを使用したり、より多くのコマンドがある場合は、以下の回答に示すように括弧内に入れる必要があります。 ~に帰属この回答

最後の出力と最後の2番目の出力の違いを識別しやすくするために、空の新しい行といくつかのマーカーを追加できます。

watch -g "(echo; echo 'New output below:'; echo '------------------'; ls) | tee -a log_file"

答え2

ウォッチを使用したくない場合は、これを試してください。コマンドが失敗すると、最新の出力が表示されます。あなたのコマンドに置き換えてください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

関連情報