Linuxでコマンドを一定間隔で繰り返し実行する方法(watch)

Linuxでコマンドを一定間隔で繰り返し実行する方法(watch)

Linuxで、特定のコマンドを一定間隔で繰り返して実行して、コマンドの実行結果を比較したいときにはwatchコマンドが便利です。

そこでここでは、watchコマンドを使ってコマンドを使って、指定したコマンドを指定した間隔で繰り返し実行する方法を紹介します。

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

書式

> watch [options] <command>

オプション

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

watchコマンドの使い方

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コマンドは、更新間隔ごとに画面が上書かれてしまうため、コマンド実行結果の履歴を見比べることができません。

そのため、コマンド実行結果の履歴を見比べたいときは、watchコマンドの代わりに、以下のようにwhileコマンドとsleepコマンドを組み合わせて実行することで、履歴を見比べることもできます。

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

あとがき

テストなどで簡易的に監視したいときには、watchコマンドが活躍してくれます。