1. 特定のアプリケーションのメモリの使用状況を手軽に把握したい
アドオンをたくさんインストールした状態で、Firefox を使っていると、メモリを大量に消費する。メモリの消費量が増えると、動作が緩慢になるので、メモリの使用状況を、逐次、確認しておきたい。
Firefox には、メモリの使用状況を表示してくれるアドオンがある。
また、メモリの状況を把握するなら、タスクマネージャを起動すれば良い。Process Lasso のようなプロセスを監視するアプリケーションにも、メモリの使用状況が、細かく表示される。
しかし、一つアプリケーションのメモリの使用状況だけを、監視したい目的には大げさすぎる。もっと、小さなウィンドウで表示させておきたい。
Firefox 以外のアプリケーションでも利用できるように、コマンドラインを利用することにした。
2. tasklist でタスクの状態を把握する
Windows のコマンドラインで、タスク一覧を表示させるコマンドは、
talklist
一覧の中から、特定のアプリケーションだけを表示させたい。
例えば、firefox だけを表示させたい場合、
/fi オプション
により、次のように指定する。
tasklist /fi "imagename eq firefox.exe"
書式については、help tasklist を参照。
コマンドを実行した結果は、以下のようになった。
イメージ名 PID セッション名 セッション# メモリ使用量 ============= ======== ============= =========== ============ firefox.exe 9048 Console 1 1,003,824 K
プロセスの ID で抽出したい場合は、tasklist で一覧した後、目的の PID を覚えておく。
例えば、PID が 9048 の場合、次のようにコマンドを入力すれば良い。
tasklist /fi "PID eq 9048"
3. バッチファイルで定期的にコマンドを実行
1秒おきに、メモリの使用量を表示させたい場合、以下の内容のバッチファイル (task.bat) を作成し、実行。
@echo off :LOOP tasklist /fi "imagename eq firefox.exe" sleep 1 cls goto :LOOP
4. Ruby のキャリッジリターンを使い、表示のチラツキを抑える
ただし、上記の方法では、更新されるたびに、画面がちらつく。
これに対処するためには、Ruby 初心者スレッド Part 46 - READ2CH によると、
176 + 1:デフォルトの名無しさん[sage] 2011/10/16(日) 21:39:16.43 clsはWindowsのcmd.exeのコマンドじゃまいか 一行だけクリアすればいいのなら loop { print Time.now; sleep 1; print "\r" } とかできるけど、数行とかそれ以上のことがしたいなら Ruby向けのライブラリを探すかWindowsのコンソール用のAPIを 使うはめになるんじゃないだろうか
print メソッドにおける “\r” は、バックスラッシュ記法 によると、
\r キャリッジリターン(0x0d)
キャリッジ・リターン(carriage return)は本来、テレタイプ端末の Baudot Code における制御文字を指す用語で、行末から行頭に戻す復帰コードであって、改行コードを含まない。…
コンピューティングでは、キャリッジ・リターン (CR) はASCII、Unicode、EBCDICにおける制御文字の一種で、プリンターまたは何らかの表示装置にカーソルを同一行の先頭位置に移動させる意味を持つ。
Ruby で、コマンドを実行するには、
バッククォート(`)で囲まれた文字列は、ダブルクォートで囲まれた文字列と同様にバックスラッシュ記法 の解釈と式展開 が行なわれた後、コマンドとして実行され、その標準出力が文字列として与えられます。
RubyInstaller for Windows などで、Ruby がインストール済みだとする。以下の内容を task.rb として、実行。
loop do lines = `tasklist /fi "imagename eq firefox.exe "`.split("\n") line = lines[3].split print "#{line[0]}: #{line[4]}" sleep 1 print "\r" end
実行した後、ウィンドウの大きさを小さくしした。
常にウィンドウを前面に表示し、監視するには、Dexpot を使い、ウィンドウを全面に表示させる機能を利用した。
参考サイト
- @IT:Windows XPの正体 強化されたコマンドライン・ツール(中編) 3.タスク制御ユーティリティ
- 碧落 - 知られざるバッチファイル
- バッチファイルで無限ループを作る - とあるソフトウェア開発者のブログ