OS

Linuxの「watch」コマンド--変化の監視を一定間隔で可能に

コマンドを一定間隔で繰り返し実行することが必要になる場合に便利なLinuxの「watch」コマンド。ここでは、同コマンドの使用方法を解説する。

 コマンドを繰り返し実行することが必要になる場合もある。例えば、Linuxサーバ上で奇妙な挙動に気づいて、サーバ上のメモリ使用かI/Oのいずれかに原因があるかもしれないと疑っている場合や、ディレクトリ内で実行される変更を監視したい場合などだ。watchと呼ばれる便利なコマンドを利用すれば、かなり簡単にそうした状況に対処できる。

 watchコマンドはほぼ全てのLinuxディストリビューションに標準でインストールされており、手軽に利用できる非常に便利なツールである。本記事では、watchについて解説する。ぜひ読者のLinux管理タスクに役立ててほしい。

watchの機能

 watchコマンドは一定間隔でのプログラムの実行を可能にし、コマンドの出力を特定の間隔で表示する。watchは、tailコマンドを使ってログファイルを確認するプロセスに似ていると考えてほしい。唯一異なるのは、出力がファイルではなく別のコマンドからもたらされることだ。そのため、コマンドの出力が時間の経過と共に変わっていくのを確認できる。初期状態だと、プログラムが2秒おきに実行される。したがって、dateコマンドの出力が2秒おきに変わるのを確認したければ、以下のコマンドを実行するといい。

watch date

 watchコマンドは2秒おきにdateコマンドを実行し、出力をターミナルウィンドウに表示する(図A)。

図A:watchでdateコマンドを実行。
図A:watchでdateコマンドを実行。

 この画面から出るには、キーボードの「Ctrl」+「c」を押す。

watchを活用する

 もちろん、watchでdateコマンドを実行してもあまり役に立たない(どうしてもターミナルに時計が欲しいのなら話は別だが)。このコマンドを有効に活用しよう。例えば、マシン上のメモリに関連する問題に気づいたとしよう。この場合、freeコマンド(システムの使用メモリと空きメモリの量を表示する)をwatchと組み合わせると、メモリの現在の状況を把握できる。これを行うには、以下のコマンドを実行する。

watch free

 freeコマンドは2秒おきに実行され、出力をターミナルに表示するので、ユーザーがこのコマンドを繰り返し実行する必要はない(図B)。

図B:watchでfreeを実行。
図B:watchでfreeを実行。

 基本的なwatchコマンドを実行することに関しては(特にfreeのようなプログラムと一緒に使うと)、1つ問題がある。実行前と実行後で何が変わったのか分かりにくい場合があることだ。幸い、-dオプションを使えば、それを分かりやすくすることができる。watch -d freeを実行すれば、freeコマンドが実行されるたびに、出力の変更箇所が強調表示されるようになる(図C)。

図C:出力の視認性が大幅に向上した。
図C:出力の視認性が大幅に向上した。

 これで、出力の変更箇所を示す強調表示部分に注目するだけでよくなった。初回実行時からの全ての変更箇所を強調表示させたい場合は、以下のように=cumulativeオプションを追加するといい。

watch -d=cumulative free

 -d=cumulativeオプションを使えば、強調表示部分の追跡がさらに容易になる。

 だが、プログラムを2秒おきに実行する必要がない場合は、どうすればいいのだろうか。-nオプションを使えば、アプリケーションを実行する間隔を(秒単位で)定義することができる。例えば、freeコマンドを5秒おきに実行したい場合は、以下のコマンドを実行するといい。

watch -d -n 5 free

 watchの有効な使い方の1つは、ファイルの変更を監視することだ。例えば、特に重要なディレクトリ(クライアントのデータ用のディレクトリなど)があり、そこに含まれるファイルやサブディレクトリに異変が起きている疑いがあるとしよう。この場合は、以下のコマンドを実行する(DIRECTORYの部分は、監視対象のディレクトリに置き換える)。

watch -d=cumulative ls -l /DIRECTORY

 このコマンドは、そのディレクトリの中身を2秒おきにリスト表示し、変更箇所を強調表示する。(変更されるべきでない)許可設定が変更されていたら、何かが起きている可能性がある。この機能は非常に便利だ。

シンプルだが効果的なツール

 watchコマンドは画期的な機能というほどではないが、Linuxサーバのトラブルシューティングや管理に効果的なツールであることは確かだ。watchの機能についてさらに詳しく知りたい人は、man watchコマンドを実行して、マニュアルページを熟読してほしい。


提供:Jack Wallen

この記事は海外CBS Interactive発の記事を朝日インタラクティブが日本向けに編集したものです。

あなたにおすすめの記事

関連記事

ホワイトペーパーランキング

  1. マンガで綴るシステム運用自動化への道~あの企業はいかにして情シス部門の残業を激減させたのか?
  2. 「顧客の今」がなぜビジネスに貢献するのか - HBR調査で見る「リアルタイムアナリティクス」の効果
  3. リモートワーク許可はすでに4割超え!? 意外な結果から見えてきた、働き方改革で本当に必要なもの
  4. 導入担当SEが語る クラウドシフトで後悔しないために、事前に確認すべきこととは?
  5. モノのサービス化を支える! ブラジルの航空機メーカー、エンブラエルを上昇気流に乗せたSPM

編集部おすすめ

トレンドまるわかり![PR]

サーバ
PC・モバイル
ストレージ
ネットワーク
仮想化
クラウドサービス
OS・ミドルウェア
OS
ミドルウェア
アプリケーションサーバ
開発
データベース
運用
セキュリティ
新興技術
財務・経理
人事・労務
マーケ・営業
購買・調達
生産・製造
データ分析
コミュニケーション
通信・通話
文書・コンテンツ
サイト構築
PCソフト
学習

ベンダー座談会

Follow TechRepublic Japan

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]