個人的に、なにか定期的にコマンドを実行して結果を監視する際にはwatchコマンドを使ってモニタするのだけど、悲しい事にwatchコマンドでは変動のあったタイミングがいつで、その出力がどういったものだったかを確認することはできない。 せめて後からログのように確認することはできないかなと考えた結果、watchで実行するコマンドの出力つかって都度diffをして、差分が発生していた場合はファイルに書き出させるという方法が使えないかと思いついた。
watch -d -x bash -c 'COMMAND | tee >(a=$(cat);diff <(echo "${a[*]}") $(ls -1 DIR/watch_log*|tail -1) >/dev/null || echo "${a[*]}" > DIR/watch_log.$(date +%Y%m%d_%H%M%S))'
(ちゃんとディレクトリとか作っておく必要があるけど)これで差分発生時の時刻とその出力結果を記録に残しつつ、watchで監視もできる。 いちいちワンライナーで書いてられないという場合は、これを元にスクリプトを書けばいいだろう。