[シェル] watch, tail コマンド結果やファイルをリアルタイム監視する

[シェル] watch, tail コマンド結果やファイルをリアルタイム監視する

コマンド結果をリアルタイム監視したい

コマンドなどの処理結果をリアルタイムで監視したい場合 watch コマンドを使います。

watch コマンドは指定のコマンドを一定間隔で実行し、その結果を監視しします。コマンドの処理結果(出力)を監視し、直近の処理結果と比較してその差分をハイライトで表示します。

watch コマンドの実行者はハイライトされる変更内容を目視で確認し、何かしらの対応を行うような使い方をします。

watch

watch コマンドの使い方は以下の通りです。

watch [Option] [Command]

よく使うオプションは以下の通りです。その他詳細は watch --help で確認してください。

  • -n, --interval: コマンドの実行間隔を秒数で指定します。(※最小0.1秒間隔)
  • -d, --differences: 直近の実行結果との差分をハイライトします。
  • -t, --no-title: タイトル行を表示しません。

実行例

例えば date コマンドの結果を監視します。date コマンドは現在日時を出力するので実行のたびに異なる結果が出力されることになります。

# 1秒間隔、差分ハイライトで date コマンド結果を監視
$ watch -n 1 -d date

実行結果は次のようになります。

Every 1.0s: date
Tue Mar  2 23:59:25 JST 2021

..

1秒ごとに繰り返し date コマンドが実行され、その結果の差分が都度ハイライトされます。この例では実行のたびにハイライトされるのが確認できます。

ls コマンドを監視すれば、ディレクトリ内容の監視が可能です。

$ watch -n 3 -d ls ./

cat コマンドを監視すればファイルの変更を監視できます。

$ watch -n 3 -d cat my.log

ファイルの監視について、ログファイルの内容を監視したい場合は後述する tail -f のほうが向いています。

tail -f

ファイルの末尾行周辺を出力するためのコマンドに tail があります。オプションの -f を付けてファイルを指定すると、ファイルの追記内容を監視することができます。tail -f はファイルの追記内容を監視するだけで変更内容の監視ではありません。

$ tail -f my.log
..

my.log の末尾行にデータが追記されるとその追記内容が出力されます。キャンセルするまで実行中は行が追加されるたびに表示されます。

ログファイルの監視であればこの tail -fwatch よりも向いています。

以上。

参考URL

Linuxカテゴリの最新記事