Linux

watchでコマンド実行結果を目視監視する

概要

  • watchは、プログラムを定期的に実行し、出力結果を表示するコマンド
  • watchコマンドで目視監視っぽいことができる
  • while true; do <command>; sleep <seconds>; done とほぼ同じようなことがより手軽にできる

サンプルいくつか

文法

// <command>はsh -cに与えられる
$ watch [options] <command>

5秒おきにls /tmpを実行し、結果を出力する

$ watch -n 5 ls /tmp

dateコマンドの結果を10秒おきに実行して結果を出力し、変化があった場合にハイライトする

$ watch -n 10 -d date

ちなみに変更があった際のハイライトは下の画像みたいな感じになる。dateコマンドの十の位の秒数が、前回の結果から変わったことを示している。

Screen Shot 2015-07-08 at 23.47.53.png

使いそうなオプション

オプション 意味
n インターバル時間(秒)。0.1秒以上の頻度は指定できない。
d 一つ前の実行結果との差分をハイライトする
t ヘッダ部分のタイトルを表示しない
x コマンドをsh -cの代わりにexecに渡す

その他雑感

  • watchは実行結果を画面上から上書いていくので、実行結果の履歴を通して見ることができない。一方、先述したwhilesleepを組み合わせて使う方法だと、実行結果は1つ前の実行結果の下に続くので通しで見ることができる
  • どんな目視監視をしたいかに応じて使い分けるのが良さそう