Linuxでコマンドの実行結果を画面上で目視監視する方法(watch)

Linuxでコマンドの実行結果を画面上で目視監視する方法(watch)

Linuxサーバで目視監視したいときに活躍するのが、watchコマンドです。watchコマンドは、プログラムを定期的に実行し、その結果をコンソール上に表示します。

ここでは、watchコマンドを使ってコマンドを使った目視監視例をいくつか紹介します。

この記事は、以下の環境で実行した結果を基にしています。他のエディションやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェアバージョン
CentOS Linux7.9.2009

watchコマンドの書式とオプション

書式

> watch [options] <command>

オプション

-n:画面を更新する間隔を秒で指定します。デフォルトは2秒間隔となります。
-d:状態に変化があった際に、変化した部分がハイライトされます。
-g:状態に変化があった際に、終了します。

Memo

-gオプションは、CentOS 7などの最近のディストリビューションでしか使えないようです。

watchコマンドの使用例

ディレクトリを監視

以下のコマンドでは、5秒おきに「ls /tmp/*.conf」コマンドを実行して、ファイルの作成や削除など、状態に変化があった際にハイライト表示します。

# watch -n 5 -d "ls /tmp/*.conf"

以下のコマンドでは、5秒おきに「ls /tmp/*.conf」コマンドを実行して、ファイルの作成や削除など、状態に変化があった際にwatchコマンドを終了します。

# watch -n 5 -g "ls /tmp/*.conf"

プロセスを監視

以下のコマンドでは、5秒おきに「ps -ef | grep httpd | grep -v grep」コマンドを実行しており、httpdプロセスの状態を目視監視できます。

# watch -n 5 "ps -ef | grep httpd | grep -v grep"

watchコマンドの代替

何らかの事情でwatchコマンドが使えないときは、whileコマンドとsleepコマンドを組み合わせて実行することで、watchコマンドと同じようなことができます。

# while true; do <command>; sleep <seconds>; done

また、watchコマンドは更新間隔ごとに画面を上書くので、コマンド実行結果の履歴を見比べることができませんが、上のwhileコマンドとsleepコマンドを組み合わせて実行すれば、画面が上書きされないので、履歴を見比べることもできます。

あとがき

簡易的に監視するときなどに結構便利です。