残メモリ量の監視

corbieのブログ:残メモリ量の監視 で mawk で新たに interactive オプション (gawk であれば fflush()) があることを知ったのですが、あまり interactive オプションのようなファイルをフラッシュするのを明示的に示したくないので、これにインスパイヤされて別のモックアップを作ってみました。

実際にリアルタイムにメモリの情報を取得したいケースは多いのですが、こういう場合には watch コマンドが便利です。

$ watch -n 1 free

のようにすることで 1 秒毎に情報を得ることができます。

そして、awk を使うということであって Linux のように proc ファイルシステムを有するシステムであれば /proc/meminfo から情報を取得するのが楽です。

$ nawk '/^MemFree:/ {f = $2} /^Buffers:/ {b = $2} /^Cached:/ {c = $2}\
  END {print f, b, c}' /proc/meminfo
100768 103640 1136908

上記のようにすれば Free, Buffers, Cached のメモリ情報を得ることができますので、これを watch コマンドと合わせます。

$ watch -n 1 'nawk "/^MemFree:/ {f = \$2} /^Buffers:/ {b = \$2} \
  /^Cached:/ {c = \$2} END {print f, b, c}" /proc/meminfo'
Every 1.0s: nawk "/^MemFree:/{f=\$2}/^Buffers:/{b=\...  Sat Sep 26 20:57:26 2009

99160 103912 1137800

慣れると楽なのですが、どうしてもエスケープ地獄の連鎖になってしまうので、無理して一行野郎と watch コマンドを合わせずにスクリプトファイルに記述してあげると良いと思います。

tag_nawk.pngtag_nawk.pngtag_nawk.pngtag_nawk.png