私は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