Bashプログラミング
 Computer >> コンピューター >  >> プログラミング >> Bashプログラミング

Linuxのwatchコマンドの使い方と実用例をわかりやすく解説

Linuxのwatchコマンドは、指定したコマンドを一定間隔で繰り返し実行し、その結果を画面に表示し続けるためのツールです。コマンドの出力が時間とともにどう変化するかをリアルタイムで監視したい場合に非常に便利です。この記事では、watchコマンドの基本的な使い方と、覚えておくと役立つ実用的な例を紹介します。

watchコマンドの基本構文

watchコマンドの構文は以下のとおりです。

watch オプション コマンド

各要素の意味は次のとおりです。

  • オプション: 後述の表から選択したオプションを指定します。watchコマンドのデフォルト動作を変更できます。
  • コマンド: watchが繰り返し実行するコマンドです。その出力を監視することになります。
  • watchは中断されるまで実行され続けます。終了するには「Ctrl + C」を押してください

主なオプション

watchコマンドでよく使われるオプションは以下のとおりです。

オプション説明
-nコマンドを実行する間隔を秒単位で指定します
-d更新の前後で変化があった部分をハイライト表示します
--differences=cumulative最初の実行以降に変化したすべての箇所を累積的に表示し続けます

watchコマンドの完全なユーザーマニュアルは、以下のコマンドで確認できます。

man watch

Linux watchコマンドの使用例

watchコマンドの有用性が最もよくわかるのは、dateコマンドやfreeコマンドと組み合わせて使うケースです。

dateコマンドとの組み合わせ

dateコマンドは、現在の日付と時刻を表示して終了するだけのコマンドです。しかし、watchコマンドと組み合わせると、dateコマンドが繰り返し実行されるため、現在日時が常に自動更新されるライブ表示になります。

watch date

実行すると、以下のような画面が表示されます。

Linuxのwatchコマンドの使い方と実用例をわかりやすく解説

画面左上には、watchがdateコマンドを2秒ごとに実行していること、そして最後にコマンドを実行した時刻が表示されています。その下の行にdateコマンドの出力結果が表示され、コマンドが実行されるたびに内容が更新されていきます。

freeコマンドとの組み合わせ

freeコマンドは、コンピューターのメモリ空き容量を表示するコマンドです。watchコマンドと組み合わせれば、メモリ使用量の推移をリアルタイムで監視できます。

watch free

Linuxのwatchコマンドの使い方と実用例をわかりやすく解説

この場合も、左上に表示されているとおり、watchがfreeコマンドを2秒ごとに実行しています。右上には現在の日時とホスト名が表示されます。

その下にはfreeコマンドの出力が表示され、watchが繰り返しコマンドを実行して出力を取得するたびに、2秒ごとに画面が更新されていきます。

実行間隔を指定する方法

デフォルトでは、watchは指定されたコマンドを2秒ごとに実行して出力を表示します。この間隔は-nオプションで自由に変更できます。

watch -n 5 free

上記のコマンドは、前の例とまったく同じ動作をしますが、実行間隔が2秒ではなく5秒になります。監視対象の変化速度に応じて、適切な間隔を設定するとよいでしょう。

変化した箇所をハイライトして確認する

実行ごとに出力のどの値が変化しているのかを目で追いたい場合は、-dオプションを使用します。

watch -d free

Linuxのwatchコマンドの使い方と実用例をわかりやすく解説

前回の実行から変化した文字がハイライト表示されます。システムサービスの状態やリソース使用量の変化を監視する際に非常に役立ちます。

また、前回の実行との差分ではなく、最初の実行時からの差分を累積的に表示したい場合は、以下のように--differences=cumulativeオプションを指定します。

watch --differences=cumulative free

このオプションを使えば、監視開始時点からどこがどう変化したのかを一目で把握できるようになり、長時間の監視作業がぐっと楽になります。

  1. Rubyのselectメソッドの使い方を実例つきで徹底解説

    Rubyのselectメソッドを使うと、オブジェクトの配列を簡単にフィルタリングできます。 たとえば、リストの中から偶数をすべて見つけたい場合などに便利です。 selectを使わずに書くと、次のようになります: even_numbers = [] [1,2,3,4,5,6].each do |n| if n.even? even_numbers << n end end even_numbers こんなにシンプルな処理なのに、かなり長いコードになってしまいますね! それでは、selectの使い方を学んでいきましょう。 selectメソッドの基本例 selectを使うには

  2. Rubyのgrepメソッド徹底解説!使い方とselectとの違いを実例で学ぶ

    今回はRubyのgrepメソッドについて詳しく見ていきます。 このメソッドにはどんな便利さがあるのでしょうか? grepを使えば、配列(Array)や範囲(Range)など、Enumerableモジュールを含むオブジェクトから、条件に一致する要素だけを効率よく抽出できます。 「それってselectでも同じことができるのでは?」 確かにそうですが、grepはselectとは異なる仕組みで動作し、得られる結果も異なります。この違いを理解すれば、コードをより簡潔に書けるようになりますよ。 それでは、実際の例を見てみましょう。 Ruby grepメソッドの実例集 まず、次のような配列を用意します。