指定コマンドを繰り返し実行してくれる watch コマンドを試してみた

REST API で動作ログが確認できるサービスがあり、CLI でログを見られるのだが、何度も同じコマンドを手で叩き直すのは面倒臭い。5秒おきに繰り返しコマンドを実行して結果の差分を確認する仕組みが欲しくて調べてみたところ、watch というコマンドがそれを叶えてくれそうだったので、使ってみた。

MacOS の場合は Homebrew でインストールできる。Linux の場合は apt-get や yum で入れられるかな。

$ brew install watch

使い方は以下のようにする。

# 元々のコマンドがこんな形だったとする : jq を併用している
$ get-status-command | jq '.data.status'

# watch コマンドで5秒ごとに繰り返す
$ watch -c -d -n 5 "get-status-command | jq '.data.logs'"

このように、watch コマンドに実行したいコマンドを渡すだけで、それを指定秒数ごとに繰り返し実行してくれる。さらに、標準出力の内容に差分が出た時はハイライト表示もしてくれるので、ログの行が追加された、とか、何かのステータスを確認するコマンドで「Available」が「Unavailable」に変わった、とか、そういう変化がすぐに確認できる。

というワケで、watch コマンド便利。