1. 導入:なぜwatchコマンドが必要なのか?
サーバーの運用や開発を行っていると、「特定のコマンドの結果がどう変化するかをずっと見ていたい」という場面がよくあります。例えば、KubernetesのPodが起動するのを待ったり、ファイルのダウンロード状況を確認したりする際、何度も手動でコマンドを入力し直すのは非常に手間ですし、効率も悪いです。
そんな課題を解決してくれるのが watchコマンド です。これを使えば、指定したコマンドを一定間隔で自動実行し、その結果をターミナル上に常に表示し続けることができます。
2. 基礎知識:watchコマンドの仕組み
watchコマンドは、指定したコマンドを「一定時間ごと」に繰り返し実行し、画面をクリアしてから最新の出力を表示するツールです。LinuxやmacOS(標準では未インストールの場合あり)のターミナルで使用でき、特にサーバーの状態監視やデバッグ作業において非常に強力な武器になります。
3. 実装と使い方
基本的な使い方は非常にシンプルです。ターミナルで以下の構文を入力するだけです。
watch [オプション] [実行したいコマンド]
デフォルトでは「2秒間隔」で更新されますが、オプションを使うことで間隔を調整したり、変更点のみをハイライト表示したりすることが可能です。
4. サンプルプログラムと活用例
以下のコードをターミナルで実行してみてください。
例1:基本的な使い方(2秒間隔で現在のファイル一覧を確認)
watch ls -lh
例2:更新間隔を1秒に変更(-nオプション)
-n 1 で1秒間隔に設定します
watch -n 1 kubectl get pods
例3:変更箇所をハイライト表示(-dオプション)
どこが変わったのか視覚的に分かりやすくなります
watch -d ls -l
例4:パイプ処理で特定のプロセスを監視
プロセスリストから特定のキーワードのみを抽出して監視し続ける例です
watch “ps aux | grep python”
※これらのコマンドは、ターミナルでそのままコピー&ペーストして実行可能です。終了したい場合は「Ctrl + C」を押してください。
5. 応用・注意点:現場で役立つポイント
・エイリアスの活用:
よく使う監視コマンドは、.bashrc や .zshrc にエイリアスとして登録しておくと便利です。
例:alias kwatch=’watch kubectl get pods’
・コマンドのクォーテーション:
パイプ(|)などを含む複雑なコマンドを実行する場合は、コマンド全体をダブルクォーテーションで囲むのを忘れないでください。そうしないと、パイプの左側だけがwatchの対象となり、期待した結果が得られないことがあります。
・サーバー負荷への配慮:
監視対象のコマンドが重い処理を行う場合、短い間隔(-n 0.1など)で実行し続けると、監視対象のサーバーやPCに負荷がかかってしまいます。運用環境では、必要以上に短い間隔にしないよう注意してください。
watchコマンドをマスターすれば、ログの監視や進捗確認のストレスを大幅に減らすことができます。ぜひ日々の業務に取り入れてみてください!

コメント