シェル芸を使ってwatchコマンドで実行したコマンドにおいて、差分発生時だけ指定したディレクトリに実行結果を保存させる
Pocket

個人的に、なにか定期的にコマンドを実行して結果を監視する際にはwatchコマンドを使ってモニタするのだけど、悲しい事にwatchコマンドでは変動のあったタイミングがいつで、その出力がどういったものだったかを確認することはできない。
せめて後からログのように確認することはできないかなと考えた結果、watchで実行するコマンドの出力つかって都度diffをして、差分が発生していた場合はファイルに書き出させるという方法が使えないかと思いついた。

Sponsored Links

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で監視もできる。
いちいちワンライナーで書いてられないという場合は、これを元にスクリプトを書けばいいだろう。

 

Pocket

Written by blacknon

インフラエンジニア(…のつもり)。 仕事で使うならクライアントはWindowsよりはUNIXの方が好き。 大体いつも眠い。

This article has 1 comments

  1. Pingback: Rustの勉強で実行結果を履歴として保持させるwatchっぽいコマンド『hwatch』を作ってみた | 俺的備忘録 〜なんかいろいろ〜

Leave a Comment

メールアドレスが公開されることはありません。

*