Flat lay of business concept
Linuxを使っていると、あるコマンドの実行結果を定期的に監視したい場面に出くわすことがあります。たとえば、サーバーのCPU使用率やディスクの空き容量、あるプロセスの状態などをリアルタイムで確認したい場合に便利なのが「watch」コマンドです。このコマンドは、指定したコマンドを一定間隔で繰り返し実行し、その出力結果をターミナル上に表示し続けてくれます。この記事では、watchコマンドの基本的な使い方から、よく使うオプション、応用的な活用例まで、実際の例を交えてわかりやすく解説していきます。
watchコマンドは、LinuxやUnix系のOSで使用される標準的なユーティリティの1つです。主に、あるコマンドを定期的に実行して、その出力をリアルタイムで監視するために使われます。
コマンドの書式はとてもシンプルです。
watch [オプション] コマンド
たとえば、現在の日時を2秒ごとに表示させたい場合は次のように実行します。
watch date
このコマンドを実行すると、画面が2秒ごとに更新されて現在の時刻が表示され続けます。
デフォルトでは、watch
は 2秒間隔 で指定したコマンドを繰り返します。しかし、状況に応じてこの間隔を変更することも可能です。
更新間隔を変更するには -n
オプションを使います。たとえば、5秒ごとにdf -h
コマンドを実行してディスク使用量を監視したい場合は以下のようにします。
watch -n 5 df -h
このようにすれば、5秒ごとにdf -h
の出力結果が表示され、ディスクの空き容量を監視できます。
注意点として、-n
に指定する間隔は 1秒未満にはできません。もし「0.5秒ごとに実行したい」といった場合はwatch
では対応できず、他の方法(たとえばwhile
ループ+sleep
)が必要になります。
watch
は毎回全体を出力しますが、何が変わったのかが分かりにくいことがあります。そういうときには-d
オプションが便利です。出力の変更部分をハイライト表示してくれるので、視覚的に差異を確認できます。
watch -d free -m
上記のコマンドはメモリ使用量を監視し、変化した箇所を強調表示してくれます。
通常、watchは画面の一番上に「Every 2.0s: コマンド名」などの情報を表示します。これが邪魔な場合は-t
オプションで非表示にできます。
watch -t uptime
このようにすれば、よりコンパクトな表示になります。
watch -n 1 free -m
1秒ごとにメモリの使用量を確認できます。サーバーの負荷チェックなどでよく使われます。
watch "ps aux | grep nginx"
nginx
のプロセスが起動しているかを監視します。プロセスが落ちたかどうかを即座に察知できます。
watch "wc -l /var/log/syslog"
ログファイルの行数を監視することで、ログの増加具合を確認できます。
watch -n 1 ifconfig eth0
または最近の環境では ip
コマンドを使って、
watch -n 1 ip -s link show eth0
でネットワークの送受信バイト数などを監視できます。
watch
の中で複雑なコマンドを使いたい場合、シェルの機能を活用することができます。たとえば、ファイルの中身が増えたか確認するようなときにはこうします。
watch "ls -l /path/to/file | awk '{print \$5}'"
また、カスタムスクリプトを使って監視するのもおすすめです。簡単なスクリプトを書いて、それをwatchで定期実行すれば、より複雑な監視ができます。
watch
は非常に便利なコマンドですが、いくつか制限もあります。
こうした制限を超えたい場合は、以下のような方法が代替になります。
while
ループ+sleep
を使うtop
やhtop
のようなTUIツールを使うcron
やsystemd timer
で定期実行watchコマンドは、Linux初心者から上級者まで広く活用されている監視ツールです。とくに何らかの出力結果を「手動で何度も打つのが面倒」と感じたら、まずはwatch
を試してみるのが良いでしょう。
頻繁に使うようになると、自分用のスクリプトを作ってそれをwatchで監視したり、他のコマンドと組み合わせて自動化の一歩を踏み出したりと、応用の幅がどんどん広がっていきます。
Linuxの力を最大限に活かすために、ぜひwatchコマンドを使いこなしてみてください。